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
2.查看数据库,可以输入如下:
1> select name from sysdatabases
3.创建数据库,输入如下
1> create database testdb1
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 命令参数
8.备份数据库
> sqlcmd -S localhost\sqlserver_name
> backup database database_name to disk='E:\backup\database_name.bak'
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]
-- b. 删除数据库
> drop database database_name
(2)恢复数据库,在进入实例服务的情况下(即sqlcmd -S localhost\sqlserver_name)执行以下语句:
> restore database database_name from disk='D:\backup\database_name.bak'
> 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'
11. 修改数据库的名称
> restore database update_database_name from disk='E:\backup\database_name.bak'
> 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'
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
注1:以上连接数据库的方式都是windows自动验证连接
注2:若是恢复失败的话,可以找到sqlserver安装目录(即MSSQL11.SQLEXPRESS)右击属性---->安全---->查看User权限的权限
注3:sqlserver_name:数据库服务名 database_name:数据库名 table_name:表名
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
sqlserver字符串拼接的实现 2023-02-02
SQL查询中出现笛卡尔积现象的解决方法 2023-05-05
教你编写SQLMap的Tamper脚本过狗 2023-02-02
SQL Server数据库连接查询和子查询实战案例 2023-04-04
SqlServer数据库脚本执行命令行指令方式 2023-04-04
SQL Server两表数据同步的多种方法详解 2023-04-04
Mybatis中处理特殊SQL处理逻辑解析 2023-04-04
Visual Studio2022连接SQL Server数据库的详细图 2023-04-04
美国设下计谋,用娘炮文化重塑日本,已影响至中国 2021-11-19 时空伴随者是什么意思?时空伴随者介绍 2021-11-09 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终 2021-11-05 2022年放假安排出炉:五一连休5天 2022年所有节日一览表 2021-10-26
电脑版 - 返回首页
2006-2024 脚本之家 JB51.Net , All Rights Reserved. 苏ICP备14036222号