sqlcmdコマンドラインツールに基づくSQL serverの管理
31707 ワード
SQLServerデータベースには、よく知られているSSMSベースのSQLserverデータベースのほか、強力なコマンドラインツールsqlcmdがあります.このコマンドラインツールは、基本的にOracle SQL*PlusおよびMySQLコマンドプロンプトの下で、関連する運用次元管理を実行するのと同じです.特に複数のスクリプト実行が必要な場合、sqlcmdが役立ちます.この文書では、sqlcmdのいくつかの一般的な使用方法と、バッチでスクリプトを実行する方法の例について説明します.
一、sqlcmdヘルプの取得
二、最もよく使われるオプション
三、よくある使い方
四、インタラクティブな使い方
五、sqlcmdを使用してSQLスクリプトを実行する
これは比較的役に立つ.Oracle SQL*PlusまたはMySQLコマンドラインを熟知している子供靴にとって、このツールはスクリプトを実行し、特に複数のスクリプトが実行する必要がある気持ちがあります.それは爽やかですね.言わないで、直接使い方を見ます.
1.単一スクリプトの実行
2、専用管理接続によるsqlcmdの使用
3、sqlcmdを使用してストレージプロセスを実行する
4、sqlcmdによるデータベースの日常管理
5、sqlcmdは複数のインスタンスに対してコードを実行する
6、バッチ方式でタスクを実行する
一、sqlcmdヘルプの取得
C:\>sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 12.0.2000.8 NT % SQLserver2014 12.0%
Copyright (c) 2014 Microsoft. All rights reserved.
usage: Sqlcmd [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-N Encrypt Connection][-C Trust Server Certificate]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend] [-L[c] list servers[clean output]]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-m errorlevel] [-V severitylevel] [-W remove trailing spaces]
[-u unicode output] [-r[0|1] msgs to stderr]
[-i inputfile] [-o outputfile] [-z new password]
[-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting]
[-K application intent]
[-M multisubnet failover]
[-b On error batch abort]
[-v var = "value"...] [-A dedicated admin connection]
[-X[1] disable commands, startup script, environment variables [and exit]]
[-x disable variable substitution]
[-? show syntax summary]
二、最もよく使われるオプション
(-S), sqlcmd Microsoft SQL Server 。
(-E、-U -P), sqlcmd SQL Server 。-E , 。
(-Q、-q -i), sqlcmd 。
(-o), sqlcmd 。
三、よくある使い方
Windows , Transact-SQL :
sqlcmd -S <ComputerName>
, -E, , sqlcmd Windows 。
Windows , Transact-SQL :
sqlcmd -S <ComputerName>\<InstanceName> sqlcmd -S .\<InstanceName>
Windows , :
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>
Windows , , sqlcmd :
sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"
Windows , , , sqlcmd :
sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt
SQL Server , Transact-SQL , sqlcmd :
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>
四、インタラクティブな使い方
, -Q、-q、-Z -i 。
:sqlcmd -S <ComputerName>\<InstanceName>
2
GO + Enter : SQLserver
Exit QUIT : sqlcmd
:REST : , ^C sqlcmd , GO , ^C 。
:ED : SQL
C:\>sqlcmd -U sa -P Sqlserve -H HQ1636
1> use testdb;
2> go
'testdb'。
1> select * from t2;
2> go
id id2 ename
----------- ----------- -------------------
1 1 NULL
1 NULL NULL
1 2 John
(3 rows affected)
1> exit
五、sqlcmdを使用してSQLスクリプトを実行する
これは比較的役に立つ.Oracle SQL*PlusまたはMySQLコマンドラインを熟知している子供靴にとって、このツールはスクリプトを実行し、特に複数のスクリプトが実行する必要がある気持ちがあります.それは爽やかですね.言わないで、直接使い方を見ます.
1.単一スクリプトの実行
C:\>type E:\temp\Testsql.sql
USE testdb;
GO
SELECT * FROM t2;
GO
C:\>sqlcmd -U sa -P Sqlserve -H HQ1636 -i E:\temp\Testsql.sql -o E:\temp\Testresult.txt
C:\>type E:\temp\Testresult.txt
'testdb'。
id id2 ename
----------- ----------- --------------------
1 1 NULL
1 NULL NULL
1 2 John
(3 rows affected)
2、専用管理接続によるsqlcmdの使用
session
C:\>sqlcmd -U sa -P Sqlserve -H HQ1636 -A
1> SELECT blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id<>0;
2> go
blocking_session_id
-------------------
54
(1 rows affected)
1> kill 54;
2> go
3、sqlcmdを使用してストレージプロセスを実行する
C:\>type E:\temp\TestProc.sql
CREATE PROC proc_query_t2 @ename VARCHAR(20)
AS
SELECT *
FROM t2
WHERE ename = @ename;
GO
C:\>sqlcmd -U sa -P Sqlserve -H HQ1636 -i E:\temp\TestProc.sql
C:\>sqlcmd -U sa -P Sqlserve -H HQ1636
1> :setvar ename robin
1> exec testdb.dbo.proc_query_t2 $(ename)
2> go
id id2 ename
----------- ----------- --------------------
1 1 Robin
(1 rows affected)
4、sqlcmdによるデータベースの日常管理
C:\>type E:\temp\DB_bak.sql
USE master;
GO
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)'
C:\>sqlcmd -U sa -P Sqlserve -H HQ1636
1> :setvar db testdb
1> :setvar bakfile e:\temp\testdb01.bak
1> :r e:\temp\DB_bak.sql
'master'。
1> go
'testdb', 'testdb' ( 1 ) 368 。
'testdb', 'testdb_log' ( 1 ) 5 。
BACKUP DATABASE 373 , 0.377 (7.729 MB/ )。
5、sqlcmdは複数のインスタンスに対してコードを実行する
2> :connect 192.168.1.194 -U robin -P xx
Sqlcmd: Successfully connected to server '192.168.1.194'.
1> select getdate()
2> go
-----------------------
2016-03-17 13:31:16.390
(1 rows affected)
1> :connect 192.168.1.207,2433 -U sa -P 123
Sqlcmd: Successfully connected to server '192.168.1.207,2433'.
1> select getdate()
2> go
-----------------------
2016-03-17 13:32:25.787
(1 rows affected)
6、バッチ方式でタスクを実行する
, .bat windows 。
C:\>type e:\temp\batch.bat
@echo off
sqlcmd -U sa -P Sqlserve -H HQ1636 -i e:\temp\all.sql -b -o e:\temp\out.log
C:\>type e:\temp\all.sql
:r e:\temp\driver.sql
:r e:\temp\hostinfo.sql
C:\>type e:\temp\hostinfo.sql
PRINT 'Below is host info.';
PRINT '=================================';
USE [master];
GO
EXEC xp_msver;
GO
C:\>type e:\temp\driver.sql
PRINT 'Below is drive info.';
PRINT '=================================';
USE master;
GO
EXEC xp_fixeddrives;
GO
C:\>e:\temp\batch.bat % %
Below is drive info.
=================================
'master'。
drive MB
----- -----------
C 99784
D 138623
E 26783
F 217172
(4 rows affected)
Below is host info.
=================================
'master'。
Index Name Internal_Value Character_Value
------ -------------------------------- -------------- --------------------------------------------------
1 ProductName NULL Microsoft SQL Server
2 ProductVersion 786432 12.0.2000.8
3 Language 2052 ( , )
4 Platform NULL NT x64
5 Comments NULL SQL
6 CompanyName NULL Microsoft Corporation
7 FileDescription NULL SQL Server Windows NT - 64 Bit
8 FileVersion NULL 2014.0120.2000.08 ((SQL14_RTM).140220-1752)
9 InternalName NULL SQLSERVR
10 LegalCopyright NULL Microsoft Corp. All rights reserved.
11 LegalTrademarks NULL Microsoft SQL Server is a registered trademark
12 OriginalFilename NULL SQLSERVR.EXE
13 PrivateBuild NULL NULL
14 SpecialBuild 131072008 NULL
15 WindowsVersion 131072008 6.1 (7601)
16 ProcessorCount 4 4
17 ProcessorActiveMask NULL f
18 ProcessorType 8664 NULL
19 PhysicalMemory 16297 16297 (17088618496)
20 Product ID NULL NULL