문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
|
번역
영문
|
스크립팅 변수와 함께 sqlcmd 사용
c:\> sqlcmd -l 60
USE AdventureWorks2012;
SELECT x.$(ColumnName)
FROM Person.Person x
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql
-
변수 이름은 공백 문자나 따옴표를 포함할 수 없습니다. -
변수 이름은 $(var)와 같은 변수 식 형태가 될 수 없습니다. -
스크립팅 변수는 대/소문자를 구분하지 않습니다. 참고
sqlcmd 환경 변수에 값을 지정하지 않으면 변수가 제거됩니다. 값이 없는 :setvar VarName 을 사용하면 변수가 지워집니다.
-
문자열 값이 공백이 포함된 경우 setvar 또는 -v 옵션을 사용하여 정의한 변수 값을 따옴표로 묶어야 합니다. -
변수 값에 따옴표가 포함되는 경우 따옴표를 이스케이프 처리해야 합니다. 예를 들면 다음과 같습니다. :setvar MyVar "spac""e".
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.스크립트에서 setvar 명령 사용
:setvar SQLCMDLOGINTIMEOUT 60
:setvar server "testserver"
:connect $(server) -l $(SQLCMDLOGINTIMEOUT)
USE AdventureWorks2012;
SELECT FirstName, LastName
FROM Person.Person;
The script is then called by using sqlcmd:
sqlcmd -i c:\test.sql
2.대화식으로 setvar 명령 사용
sqlcmd
:setvar MYDATABASE AdventureWorks2012
USE $(MYDATABASE);
GO
결과 집합은 다음과 같습니다.
Changed database context to 'AdventureWorks2012'
1>
3.sqlcmd 내에서 명령 프롬프트 환경 변수 사용
C:\>SET tablename=Person.Person
C:\>SET col1=FirstName
C:\>SET col2=LastName
C:\>SET title=Ms.
C:\>sqlcmd -d AdventureWorks2012
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO
4.sqlcmd 내에서 사용자 수준 환경 변수 사용
:OUT $(MyTempDirectory)
USE AdventureWorks2012;
SELECT FirstName
FROM AdventureWorks2012.Person.Person
C:\ >SET MyTempDirectory=%Temp%\output.txt
C:\ >sqlcmd -i C:\testscript.txt
Changed database context to 'AdventureWorks2012'.
FirstName
--------------------------------------------------
Gustavo
Catherine
Kim
Humberto
(4 rows affected)
5.시작 스크립트 사용
SET NOCOUNT ON
GO
DECLARE @nt_username nvarchar(128)
SET @nt_username = (SELECT rtrim(convert(nvarchar(128), nt_username))
FROM sys.dm_exec_sessions WHERE spid = @@SPID)
SELECT @nt_username + ' is connected to ' +
rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('servername'))) +
' (' +
rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('productversion'))) +
')'
:setvar SQLCMDMAXFIXEDTYPEWIDTH 100
SET NOCOUNT OFF
GO
:setvar SQLCMDMAXFIXEDTYPEWIDTH
C:\> SET sqlcmdini=c:\init.sql
>1 Sqlcmd
>1 < user > is connected to < server > (9.00.2047.00)
![]() |
---|
|
6.변수 확장
USE AdventureWorks2012;
CREATE TABLE AdventureWorks2012.dbo.VariableTest
(
Col1 nvarchar(50)
);
GO
INSERT INTO AdventureWorks2012.dbo.VariableTest(Col1)
VALUES('$(tablename)');
GO
C:\> sqlcmd
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>2 GO
>3 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>4 GO
결과 집합은 다음과 같습니다.
>1 Col1
>2 ------------------
>3 $(tablename)
>4
>5 (1 rows affected)
>6 :setvar MyVar $(tablename)
>6 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>7 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>2 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(MyVar)';
>2 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(MyVar)';
>2 GO