SqlServer数据库脚本执行命令行指令方式

 更新时间:2023年06月13日 17:22:35   作者:就晓得耍  
这篇文章主要介绍了SqlServer数据库脚本执行命令行指令方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SqlServer脚本执行命令行指令

1.用户登录,首先打开命令提示符窗口,假设:用户是testor,密码是123,输入如下

C:\Windows\System32>osql -S 127.0.0.1 -U testor -P 123
1>

2.查看数据库,可以输入如下:

1> select name from sysdatabases
2> go

3.创建数据库,输入如下

1> create database testdb1
2> go

4.执行sql文件,先查找sqlserver的工具目录,我的是C:\Program Files\Microsoft SQL Server\150\Tools\Binn,在该目录地址栏输入cmd,

再执行以下脚本,其中-d selecteddb 本来是选择数据库,不过我这个数据库版本貌似没有起效

sqlcmd -S . -U 用户名 -P 密码 -d selecteddb -i E:\somesql.sql

好了,sqlserver的分享就这样了,反正觉着没有mysql或者mariadb好用,凑合用吧

SqlServer命令行的使用

1.连接sqlserver

sqlcmd -S localhost\sqlserver_name

2.连接数据库

sqlcmd -S localhost\sqlserver_name -d database_name

3.执行SQL语句

sqlcmd -S localhost\sqlserver_name -d database_name -Q "SELECT * FROM [table_name]"

4.执行SQL脚本文件

sqlcmd -S localhost\sqlserver_name -d database_name -i "SQL file path"

5.将查询的结果集输出到文件

sqlcmd -S localhost\sqlserver_name -d database_name -o "file path"

6.输出的结果集字符较长,输出到控制台和文本都不能显示完全,需要再加一个参数

sqlcmd -S localhost\sqlserver_name -d database_name -y 1024 -Q "SELECT * FROM [table_name]"
-- 注:此处的“-y”后面的值可以更改,如果还是不能完全显示,将数值再改大一点

7.查询sqlserver 命令参数

sqlcmd -?

8.备份数据库

> sqlcmd -S localhost\sqlserver_name
> backup database database_name to disk='E:\backup\database_name.bak'
> go

9.通过database_name.bak文件查询逻辑名

restore filelistonly from disk='path/to/backup/file.bak'

10.恢复数据库

--(1)先查询数据库是否存在,存在就删除
-- a. 查询数据库
> sqlcmd -S localhost\sqlserver_name
> select [Name] from [sysdatabases]
> go
-- b. 删除数据库
> drop database database_name
(2)恢复数据库,在进入实例服务的情况下(即sqlcmd -S localhost\sqlserver_name)执行以下语句:
> restore database database_name from disk='D:\backup\database_name.bak'
> with
> move 'database_name' to 'D:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\database_name.mdf',
> move 'database_name_log' to 'D:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\database_name_log.ldf'
> go

11. 修改数据库的名称

> restore database update_database_name from disk='E:\backup\database_name.bak'
> with
> move 'database_name' to 'E:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\update_database_name.mdf',
> move 'database_name_log' to 'E:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\update_database_name_log.ldf'
> go

12. 获取数据的逻辑名和日志逻辑名

-- 方式一:
select file_name(1),file_name(2)
-- 方式二:
SELECT name FROM sys.database_files 

13. 修改数据的逻辑名或者日志逻辑名

ALTER DATABASE [database_name] MODIFY FILE ( NAME = database_name, NEWNAME = new_database_name ) 
ALTER DATABASE [database_name] MODIFY FILE ( NAME = database_nameb_log, NEWNAME = new_database_name_log ) 

14. 查询数据文件或日志文件当前存放路径

SELECT physical_name FROM sys.database_files 

15. bcp 命令的使用

-- 导出整张表
bcp MDataPort.dbo.Recording out E:\Backup\recording.bcp -S .\sqlexpress -T -c
-- 导入整张表
bcp MDataPort.dbo.Recording in E:\Backup\recording.bcp -S .\sqlexpress -T -c
-- 导出指定时间戳
bcp "select * from MDataPort.dbo.Recording where Timestamp >= '2019-02-01 00:00:00'" queryout E:\Backup\recording_20190201.bcp -S .\sqlexpress -T -c
-- 导出指定列
bcp "select Timestamp from MDataPort.dbo.Recording" queryout E:\Backup\recording_Timestamp.bcp -S .\sqlexpress -T -c

16.   row_number()分页

-- 对源表进行重新排序,并增加一个排序的ID字段
 select row_number() over(order by id) as ROWID, *  from [table_name]
)  as new_table_name
where ROWID > OnePageNum* (CurrentPage-1)
--原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录
-- 这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的
-- Annotation:OnePageNum每页显示的记录数    
-- CurrentPage:当前页页数

17. 遍历表

DECLARE 
  @i int ,
  @timestamp datetime2(7),
  @type tinyint,
  @mea uniqueidentifier
  SET @i = 1 
  WHILE (@i <= (select count(*) from [Recording])) 
BEGIN 
  select top 1 @mea = [MeasurementID], @timestamp = [Timestamp], @type = [Type]  from (
    -- 对源表进行重新排序,并增加一个排序的ID字段
     select row_number() over(order by [MeasurementID], [Timestamp], [Type]) as ROWID, *  from [Recording]
    )  as new_table_name
    where ROWID > 1 * (@i-1)
  update [Recording] set [Temperature] = (select cast( floor(rand()*100) as int)) where [MeasurementID] = @mea and [Timestamp] = @timestamp and [Type] = @type
  SET @i = @i + 1
END 
GO 

注1:以上连接数据库的方式都是windows自动验证连接

注2:若是恢复失败的话,可以找到sqlserver安装目录(即MSSQL11.SQLEXPRESS)右击属性---->安全---->查看User权限的权限

注3:sqlserver_name:数据库服务名        database_name:数据库名         table_name:表名

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • sqlServer 数据库语法大全

    sqlServer 数据库语法大全

    这篇文章主要介绍了sqlServer中数据库语法,包括数据库的常用操作方法,需要的朋友可以参考下
    2013-08-08
  • SqlServer异常处理常用步骤

    SqlServer异常处理常用步骤

    SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞。关于SqlServer异常处理常用步骤有哪些呢?大家了解吗?下面小编通过本篇文章给大家介绍SqlServer异常处理常用步骤,感兴趣的朋友一起看看吧
    2015-11-11
  • SQL Server DBA维护常用语句

    SQL Server DBA维护常用语句

    数据库的日常维护,可以通过SQL Server中的维护计划来自动实现,非常方便。不过,也不是所有的维护,都可以通过维护计划来实现, 下面将通过代码来实现
    2014-03-03
  • MSSQL 多字段根据范围求最大值实现方法

    MSSQL 多字段根据范围求最大值实现方法

    MSSQL 多字段根据范围求最大值实现语句,大家可以参考下
    2009-09-09
  • SQL Update更新数据的操作方法

    SQL Update更新数据的操作方法

    本文详解SQL UPDATE语句的基本语法、WHERE条件使用、更新值类型及联表更新方法,强调更新前需验证数据并使用事务,避免误操作导致数据错误,感兴趣的朋友一起看看吧
    2025-08-08
  • SQL解决未能删除约束问题drop constraint

    SQL解决未能删除约束问题drop constraint

    本文主要介绍了SQL解决未能删除约束问题drop constraint,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 揭秘SQL Server 2014有哪些新特性(2)-固态硬盘 Buffer Pool(缓冲池) 扩展

    揭秘SQL Server 2014有哪些新特性(2)-固态硬盘 Buffer Pool(缓冲池) 扩展

    SQL Server 2014 中引入的缓冲池扩展提供数据库引擎缓冲池的非易失性随机存取内存(即固态硬盘)扩展的无缝集成,从而显著提高 I/O 吞吐量。 那么今天我们来探究下,这个功能到底如何强悍吧
    2014-08-08
  • SQL语句的各个关键字的解析过程详细总结

    SQL语句的各个关键字的解析过程详细总结

    由于最近需要做一些sql query性能提升的研究,因此研究了一下sql语句的解析过程;本文是我在看了各种资料后手机总结的,会详细的,一步一步的讲述一个sql语句的各个关键字的解析过程,欢迎大家互相学习
    2013-01-01
  • sqlserver数据库加密后无法使用MDF,LDF,log文件名称被修改的数据恢复

    sqlserver数据库加密后无法使用MDF,LDF,log文件名称被修改的数据恢复

    这篇文章主要给大家分享的是sqlserver数据库加密后无法使用MDF,LDF,log文件名称被修改的数据恢复案例,如果工作中你也遇到这样的问题,可以参考一下
    2022-03-03
  • SQLServer触发器调用JavaWeb接口的过程详解

    SQLServer触发器调用JavaWeb接口的过程详解

    sqlServer要想调用web接口,就要使用自带的存储过程。而这些存储过程2005版本以后默认时关闭的,所以要先开启。对SQLServer触发器调用JavaWeb接口的过程感兴趣的朋友一起看看吧
    2021-12-12

最新评论