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

2023-12-07 0 634
目录

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 = 1701918282, @type = [Type]  from (
    — 对源表进行重新排序,并增加一个排序的ID字段
     select row_number() over(order by [MeasurementID], 1701918282, [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 1701918282 = @timestamp and [Type] = @type
  SET @i = @i + 1
END 
GO 

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

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

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源。

您可能感兴趣的文章:

  • 命令行启动mssqlserver服务的方法示例
  • 使用cmd命令行窗口操作SqlServer的方法
  • sqlserver常用命令行操作(启动、停止、暂停)

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 MsSql SqlServer数据库脚本执行命令行指令方式 https://www.u-9.cn/database/mssql/121132.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务