SqlServer數據庫腳本執行命令行指令方式
1.用戶登錄,首先打開命令提示符窗口,假設:用戶是testor,密碼是123,輸入如下
C:\Windows\System32>osql -S 127.0.0.1 -U testor -P 1231>2.查看數據庫,可以輸入如下:
1> select name from sysdatabases2> go3.創建數據庫,輸入如下
1> create database testdb12> go4.執行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_name2.連接數據庫
sqlcmd -S localhost\sqlserver_name -d database_name3.執行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'> go9.通過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'> go11. 修改數據庫的名稱
> 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'> go12. 獲取數據的邏輯名和日志邏輯名
-- 方式一: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 -c16. row_number()分頁
-- 對源表進行重新排序,并增加一個排序的ID字段?select row_number() over(order by id) as ROWID, * ?from [table_name]) ?as new_table_namewhere 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 + 1END?GO?注1:以上連接數據庫的方式都是windows自動驗證連接
注2:若是恢復失敗的話,可以找到sqlserver安裝目錄(即MSSQL11.SQLEXPRESS)右擊屬性---->安全---->查看User權限的權限
注3:sqlserver_name:數據庫服務名database_name:數據庫名 table_name:表名
總結以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
