SqlServer數(shù)據(jù)庫(kù)腳本執(zhí)行命令行指令方式
SqlServer腳本執(zhí)行命令行指令
1.用戶登錄,首先打開命令提示符窗口,假設(shè):用戶是testor,密碼是123,輸入如下
C:\Windows\System32>osql -S 127.0.0.1 -U testor -P 123 1>
2.查看數(shù)據(jù)庫(kù),可以輸入如下:
1> select name from sysdatabases 2> go
3.創(chuàng)建數(shù)據(jù)庫(kù),輸入如下
1> create database testdb1 2> go
4.執(zhí)行sql文件,先查找sqlserver的工具目錄,我的是C:\Program Files\Microsoft SQL Server\150\Tools\Binn,在該目錄地址欄輸入cmd,
再執(zhí)行以下腳本,其中-d selecteddb 本來(lái)是選擇數(shù)據(jù)庫(kù),不過(guò)我這個(gè)數(shù)據(jù)庫(kù)版本貌似沒有起效
sqlcmd -S . -U 用戶名 -P 密碼 -d selecteddb -i E:\somesql.sql
好了,sqlserver的分享就這樣了,反正覺著沒有mysql或者mariadb好用,湊合用吧
SqlServer命令行的使用
1.連接sqlserver
sqlcmd -S localhost\sqlserver_name
2.連接數(shù)據(jù)庫(kù)
sqlcmd -S localhost\sqlserver_name -d database_name
3.執(zhí)行SQL語(yǔ)句
sqlcmd -S localhost\sqlserver_name -d database_name -Q "SELECT * FROM [table_name]"
4.執(zhí)行SQL腳本文件
sqlcmd -S localhost\sqlserver_name -d database_name -i "SQL file path"
5.將查詢的結(jié)果集輸出到文件
sqlcmd -S localhost\sqlserver_name -d database_name -o "file path"
6.輸出的結(jié)果集字符較長(zhǎng),輸出到控制臺(tái)和文本都不能顯示完全,需要再加一個(gè)參數(shù)
sqlcmd -S localhost\sqlserver_name -d database_name -y 1024 -Q "SELECT * FROM [table_name]" -- 注:此處的“-y”后面的值可以更改,如果還是不能完全顯示,將數(shù)值再改大一點(diǎn)
7.查詢sqlserver 命令參數(shù)
sqlcmd -?
8.備份數(shù)據(jù)庫(kù)
> sqlcmd -S localhost\sqlserver_name > backup database database_name to disk='E:\backup\database_name.bak' > go
9.通過(guò)database_name.bak文件查詢邏輯名
restore filelistonly from disk='path/to/backup/file.bak'
10.恢復(fù)數(shù)據(jù)庫(kù)
--(1)先查詢數(shù)據(jù)庫(kù)是否存在,存在就刪除 -- a. 查詢數(shù)據(jù)庫(kù) > sqlcmd -S localhost\sqlserver_name > select [Name] from [sysdatabases] > go -- b. 刪除數(shù)據(jù)庫(kù) > drop database database_name (2)恢復(fù)數(shù)據(jù)庫(kù),在進(jìn)入實(shí)例服務(wù)的情況下(即sqlcmd -S localhost\sqlserver_name)執(zhí)行以下語(yǔ)句: > 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. 修改數(shù)據(jù)庫(kù)的名稱
> 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. 獲取數(shù)據(jù)的邏輯名和日志邏輯名
-- 方式一: select file_name(1),file_name(2) -- 方式二: SELECT name FROM sys.database_files?
13. 修改數(shù)據(jù)的邏輯名或者日志邏輯名
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. 查詢數(shù)據(jù)文件或日志文件當(dāng)前存放路徑
SELECT physical_name FROM sys.database_files?
15. bcp 命令的使用
-- 導(dǎo)出整張表 bcp MDataPort.dbo.Recording out E:\Backup\recording.bcp -S .\sqlexpress -T -c -- 導(dǎo)入整張表 bcp MDataPort.dbo.Recording in E:\Backup\recording.bcp -S .\sqlexpress -T -c -- 導(dǎo)出指定時(shí)間戳 bcp "select * from MDataPort.dbo.Recording where Timestamp >= '2019-02-01 00:00:00'" queryout E:\Backup\recording_20190201.bcp -S .\sqlexpress -T -c -- 導(dǎo)出指定列 bcp "select Timestamp from MDataPort.dbo.Recording" queryout E:\Backup\recording_Timestamp.bcp -S .\sqlexpress -T -c
16. row_number()分頁(yè)
-- 對(duì)源表進(jìn)行重新排序,并增加一個(gè)排序的ID字段 ?select row_number() over(order by id) as ROWID, * ?from [table_name] ) ?as new_table_name where ROWID > OnePageNum* (CurrentPage-1) --原理:先把表中的所有數(shù)據(jù)都按照一個(gè)rowNumber進(jìn)行排序,然后查詢r(jià)ownuber大于40的前十條記錄 -- 這種方法和oracle中的一種分頁(yè)方式類似,不過(guò)只支持2005版本以上的 -- Annotation:OnePageNum每頁(yè)顯示的記錄數(shù) ? ? -- CurrentPage:當(dāng)前頁(yè)頁(yè)數(shù)
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 ( ? ? -- 對(duì)源表進(jìn)行重新排序,并增加一個(gè)排序的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:以上連接數(shù)據(jù)庫(kù)的方式都是windows自動(dòng)驗(yàn)證連接
注2:若是恢復(fù)失敗的話,可以找到sqlserver安裝目錄(即MSSQL11.SQLEXPRESS)右擊屬性---->安全---->查看User權(quán)限的權(quán)限
注3:sqlserver_name:數(shù)據(jù)庫(kù)服務(wù)名 database_name:數(shù)據(jù)庫(kù)名 table_name:表名
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
sqlServer 數(shù)據(jù)庫(kù)語(yǔ)法大全
這篇文章主要介紹了sqlServer中數(shù)據(jù)庫(kù)語(yǔ)法,包括數(shù)據(jù)庫(kù)的常用操作方法,需要的朋友可以參考下2013-08-08
MSSQL 多字段根據(jù)范圍求最大值實(shí)現(xiàn)方法
MSSQL 多字段根據(jù)范圍求最大值實(shí)現(xiàn)語(yǔ)句,大家可以參考下2009-09-09
SQL解決未能刪除約束問(wèn)題drop constraint
本文主要介紹了SQL解決未能刪除約束問(wèn)題drop constraint,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
揭秘SQL Server 2014有哪些新特性(2)-固態(tài)硬盤 Buffer Pool(緩沖池) 擴(kuò)展
SQL Server 2014 中引入的緩沖池?cái)U(kuò)展提供數(shù)據(jù)庫(kù)引擎緩沖池的非易失性隨機(jī)存取內(nèi)存(即固態(tài)硬盤)擴(kuò)展的無(wú)縫集成,從而顯著提高 I/O 吞吐量。 那么今天我們來(lái)探究下,這個(gè)功能到底如何強(qiáng)悍吧2014-08-08
SQL語(yǔ)句的各個(gè)關(guān)鍵字的解析過(guò)程詳細(xì)總結(jié)
由于最近需要做一些sql query性能提升的研究,因此研究了一下sql語(yǔ)句的解析過(guò)程;本文是我在看了各種資料后手機(jī)總結(jié)的,會(huì)詳細(xì)的,一步一步的講述一個(gè)sql語(yǔ)句的各個(gè)關(guān)鍵字的解析過(guò)程,歡迎大家互相學(xué)習(xí)2013-01-01
sqlserver數(shù)據(jù)庫(kù)加密后無(wú)法使用MDF,LDF,log文件名稱被修改的數(shù)據(jù)恢復(fù)
這篇文章主要給大家分享的是sqlserver數(shù)據(jù)庫(kù)加密后無(wú)法使用MDF,LDF,log文件名稱被修改的數(shù)據(jù)恢復(fù)案例,如果工作中你也遇到這樣的問(wèn)題,可以參考一下2022-03-03
SQLServer觸發(fā)器調(diào)用JavaWeb接口的過(guò)程詳解
sqlServer要想調(diào)用web接口,就要使用自帶的存儲(chǔ)過(guò)程。而這些存儲(chǔ)過(guò)程2005版本以后默認(rèn)時(shí)關(guān)閉的,所以要先開啟。對(duì)SQLServer觸發(fā)器調(diào)用JavaWeb接口的過(guò)程感興趣的朋友一起看看吧2021-12-12

