欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SqlServer數(shù)據(jù)庫腳本執(zhí)行命令行指令方式

 更新時間:2023年06月13日 17:22:35   作者:就曉得耍  
這篇文章主要介紹了SqlServer數(shù)據(jù)庫腳本執(zhí)行命令行指令方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SqlServer腳本執(zhí)行命令行指令

1.用戶登錄,首先打開命令提示符窗口,假設(shè):用戶是testor,密碼是123,輸入如下

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

2.查看數(shù)據(jù)庫,可以輸入如下:

1> select name from sysdatabases
2> go

3.創(chuàng)建數(shù)據(jù)庫,輸入如下

1> create database testdb1
2> go

4.執(zhí)行sql文件,先查找sqlserver的工具目錄,我的是C:\Program Files\Microsoft SQL Server\150\Tools\Binn,在該目錄地址欄輸入cmd,

再執(zhí)行以下腳本,其中-d selecteddb 本來是選擇數(shù)據(jù)庫,不過我這個數(shù)據(jù)庫版本貌似沒有起效

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

好了,sqlserver的分享就這樣了,反正覺著沒有mysql或者mariadb好用,湊合用吧

SqlServer命令行的使用

1.連接sqlserver

sqlcmd -S localhost\sqlserver_name

2.連接數(shù)據(jù)庫

sqlcmd -S localhost\sqlserver_name -d database_name

3.執(zhí)行SQL語句

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é)果集字符較長,輸出到控制臺和文本都不能顯示完全,需要再加一個參數(shù)

sqlcmd -S localhost\sqlserver_name -d database_name -y 1024 -Q "SELECT * FROM [table_name]"
-- 注:此處的“-y”后面的值可以更改,如果還是不能完全顯示,將數(shù)值再改大一點

7.查詢sqlserver 命令參數(shù)

sqlcmd -?

8.備份數(shù)據(jù)庫

> 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.恢復(fù)數(shù)據(jù)庫

--(1)先查詢數(shù)據(jù)庫是否存在,存在就刪除
-- a. 查詢數(shù)據(jù)庫
> sqlcmd -S localhost\sqlserver_name
> select [Name] from [sysdatabases]
> go
-- b. 刪除數(shù)據(jù)庫
> drop database database_name
(2)恢復(fù)數(shù)據(jù)庫,在進(jìn)入實例服務(wù)的情況下(即sqlcmd -S localhost\sqlserver_name)執(zhí)行以下語句:
> 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ù)庫的名稱

> 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)出指定時間戳
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()分頁

-- 對源表進(jìn)行重新排序,并增加一個排序的ID字段
?select row_number() over(order by id) as ROWID, * ?from [table_name]
) ?as new_table_name
where ROWID > OnePageNum* (CurrentPage-1)
--原理:先把表中的所有數(shù)據(jù)都按照一個rowNumber進(jìn)行排序,然后查詢rownuber大于40的前十條記錄
-- 這種方法和oracle中的一種分頁方式類似,不過只支持2005版本以上的
-- Annotation:OnePageNum每頁顯示的記錄數(shù) ? ?
-- CurrentPage:當(dāng)前頁頁數(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 (
? ? -- 對源表進(jìn)行重新排序,并增加一個排序的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ù)庫的方式都是windows自動驗證連接

注2:若是恢復(fù)失敗的話,可以找到sqlserver安裝目錄(即MSSQL11.SQLEXPRESS)右擊屬性---->安全---->查看User權(quán)限的權(quán)限

注3:sqlserver_name:數(shù)據(jù)庫服務(wù)名        database_name:數(shù)據(jù)庫名         table_name:表名

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論