다른 SQL Server에 연결하기 위한 T-SQL 구문은 무엇입니까?
한 SQL Server에서 다른 SQL Server로 저장 프로시저(SP)를 복사해야 하는 경우 SSMS에서 SP를 마우스 오른쪽 버튼으로 클릭하고 Script Stored Procedure를 > CREATE to > New Query Editor Window로 선택합니다.그런 다음 해당 창을 마우스 오른쪽 버튼으로 클릭하고 Connection > Change Connection...(연결 변경...)을 선택하여 연결을 변경합니다.그런 다음 새 서버와 F5를 선택하여 새 서버에서 작성을 실행합니다.
그래서 제 질문은 "다른 SQL 서버에 연결하기 위한 T-SQL 구문은 무엇입니까?"입니다. 그러면 이 구문을 생성 스크립트의 맨 위에 붙여넣고 F5를 실행하면 새 서버로 전환하여 생성 스크립트를 실행할 수 있습니다.
질문을 입력하는 동안 저는 제가 하려는 일에 대한 배경을 제공하면 여러분이 이를 달성할 수 있는 더 빠르고 더 나은 방법을 생각해 낼 수 있다는 것을 깨달았습니다.
SQL Server Management Studio의 쿼리 메뉴에서 SQLCMD 모드를 설정합니다.그런 다음 스크립트의 맨 위에 아래 명령을 입력합니다.
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]
여러 서버에 연결하는 경우 다음을 삽입해야 합니다.GO
연결 간에, 그렇지 않으면 T-SQL이 생각하는 서버에서 실행되지 않습니다.
또한 연결된 서버와 관련된 쿼리를 작성할 때 다음과 같은 대괄호를 포함해야 합니다.
SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]
적어도 2000/2005년에는 서버 이름 주위에 [] 괄호가 필요하다는 것을 알게 되었습니다.
업데이트: 다른 sql 서버에 연결하고 sql 문을 실행하려면 sqlcmd Utility를 사용해야 합니다.이 작업은 일반적으로 배치 파일에서 수행됩니다.관리 스튜디오 내에서 실행하려는 경우 이를 xmp_cmdshell과 결합할 수 있습니다.
한 가지 방법은 연결된 서버를 구성하는 것입니다.그런 다음 연결된 서버와 데이터베이스 이름을 테이블 이름에 추가할 수 있습니다.(linkedserver.dbo에서 *를 선택합니다.테이블 이름)
USE master
GO
EXEC sp_addlinkedserver
'SEATTLESales',
N'SQL Server'
GO
DDL에서 쿼리 실행을 위해 서버 컨텍스트를 선택할 수 있는지에 대한 질문을 다른 말로 표현하자면 "아니오"입니다.데이터베이스 컨텍스트만 USE로 프로그래밍 방식으로 선택할 수 있습니다.(외부에서 이미 서버 컨텍스트를 미리 선택함)
연결된 서버와 OPEN QUERY는 DDL에 액세스할 수 있지만 문자열로 캡슐화하려면 코드를 다소 다시 작성해야 하므로 개발/디버깅이 어렵습니다.
또는 외부 드라이버 프로그램을 사용하여 OPEN QUERY를 통해 원격 서버로 보낼 SQL 파일을 선택할 수 있습니다.그러나 대부분의 경우 DDL을 평가하기 위해 처음부터 서버에 직접 연결하는 것이 좋습니다.
다른 서버에서 데이터를 검색할 때마다 두 단계가 필요합니다.
첫 번째 단계:
-- Server one scalar variable
DECLARE @SERVER VARCHAR(MAX)
--Oracle is the server to which we want to connect
EXEC SP_ADDLINKEDSERVER @SERVER='ORACLE'
두 번째 단계:
--DBO is the owner name to know table owner name execute (SP_HELP TABLENAME)
SELECT * INTO DESTINATION_TABLE_NAME
FROM ORACLE.SOURCE_DATABASENAME.DBO.SOURCE_TABLE
여러 서버에 연결하는 경우 서버를 전환하기 전에 'GO'를 추가해야 합니다. 그렇지 않으면 SQL 문이 잘못된 서버에 대해 실행됩니다.
예.
:CONNECT SERVER1
Select * from Table
GO
enter code here
:CONNECT SERVER1
Select * from Table
GO
연결된 서버(sp_addlinked 서버로 할 수 있음)를 만든 다음 OPENQUERY를 사용해 보십시오.
C 드라이브에 새 테이블을 만들기 위해 먼저 텍스트 파일을 만듭니다.이 텍스트 파일에서 원하는 모든 것을 사용할 수 있습니다.
이 경우 텍스트 파일의 이름은 "Bedrijf"입니다.txt"
내용:
Print 'START(A) create table'
GO 1
If not EXISTS
(
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'Bedrijf'
)
BEGIN
CREATE TABLE [dbo].[Bedrijf] (
[IDBedrijf] [varchar] (38) NOT NULL ,
[logo] [varbinary] (max) NULL ,
[VolledigeHandelsnaam] [varchar] (100) NULL
) ON [PRIMARY]
구하라
그런 다음 "Bedrijf.bat"이라는 이름과 확장 배트를 가진 다른 txt 파일을 만듭니다.내용:
OSQL.EXE -U Username -P Password -S IPaddress -i C:Bedrijf.txt -o C:Bedrijf.out -d myDatabaseName
저장하고 탐색기에서 실행하려면 두 번 클릭합니다.
결과는 C 드라이브의 텍스트 파일에 "Bedrijf.out"이라는 이름으로 저장됩니다.
그것은 보여줍니다.
1> 2> 3> START(A) create table
만사가 순조롭다면
바로 그겁니다.
다음과 같은 PowerShell 유형을 사용해 보십시오.
$cn = new-object system.data.SqlClient.SQLConnection("Data Source=server1;Initial Catalog=db1;User ID=user1;Password=password1");
$cmd = new-object system.data.sqlclient.sqlcommand("exec Proc1", $cn);
$cn.Open();
$cmd.CommandTimeout = 0
$cmd.ExecuteNonQuery()
$cn.Close();
가능하면 SSIS(SQL Server Integration Services)를 확인하십시오.저는 이 툴킷에 흠뻑 젖었을 뿐이지만, 이미 40개 이상의 서버를 루프하고 모든 종류의 혼란을 일으킬 준비를 하고 있습니다;)
언급URL : https://stackoverflow.com/questions/125457/what-is-the-t-sql-syntax-to-connect-to-another-sql-server
'programing' 카테고리의 다른 글
오류: 'babel-register' 모듈을 찾을 수 없습니다. (0) | 2023.07.08 |
---|---|
모듈 빌드 실패:오류: 다음에 대한 출력이 없는 형식 스크립트입니다. (0) | 2023.07.08 |
15분 전과 동일한 날짜 시간을 만드는 방법은 무엇입니까? (0) | 2023.07.08 |
IIS7에서 eTag 헤더를 제거하려면 어떻게 해야 합니까? (0) | 2023.07.03 |
NumericTextField를 사용할 때 "프롭을 직접 변환하지 않음"이 표시되는 이유는 무엇입니까? (0) | 2023.07.03 |