servername\instancename
다음 호출을 사용하여 SQL Server 2014 인스턴스에서 연결된 서버를 만들려고합니다 .
EXEC master.dbo.sp_addlinkedserver
@server = N'servername\instancename',
@srvproduct=N'SQL Server'
오류가 발생합니다.
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'servername\instancename' already exists.
이에 따라 SQL Server 2005의 벌금을 작동하고, MSDN ,
연결된 서버가 다른 SQL Server 인스턴스 일 필요는 없습니다.
그래서 이것을 허용하지 않는 최신 버전에서 무엇이 바뀌 었는지 잘 모르겠습니다. UI를 사용하면 비슷한 메시지가 생성됩니다.
로컬 SQL Server를 연결된 서버로 만들 수 없습니다.
요청하는 것이 이상하다는 것을 이해하지만 2005 년에 작동하고 별도의 인스턴스에 있던 일부 레거시 코드를 지원해야합니다. 설명서에는 작동하지만 작동하지 않아야한다고 나와 있습니다. 2014 년에 이것을 작동시키는 방법이 있습니까, 아니면 기본 코드를 수정해야합니까?
1
실제로 차이를 만들어서는 안됩니다. 로컬 서버에서 4 부분 식별자를 사용할 수 있습니다.
—
Kris Gruttemeyer
로컬 서버에 연결된 서버를 만들려고하는 이유는 무엇입니까? 어떤 부분이 작동하지 않습니까? 아마 그게 당신의 질문에 대한 것입니다 ...
—
Aaron Bertrand
레거시 코드는 연결된 서버를 통해 서로 다른 인스턴스에 연결되도록 작성되었습니다. 어느 시점에서 두 인스턴스는 단일 인스턴스로 병합되었지만 코드와 연결된 서버는 변경되지 않았습니다. 내 목표는 코드를 그대로 지원하는 것입니다 .a) 코드 변경에 관련된 내용을 알지 못하고 b) 주요 개발자는 향후 별도의 인스턴스에 배포되는 데이터베이스를 지원할 수 있기를 원하기 때문입니다.
—
mathewb
동의어를 고려할 수 있습니다. 그런 다음 객체를 다른 서버로 옮긴 경우 동의어를 삭제하고 다시 작성하기 만하면 코드를 건드릴 필요가 없습니다.
—
Aaron Bertrand
고마워 애런 그것이 바로 내가 찾던 것이라고 생각합니다. 하나의 데이터베이스는 동의어를 사용하므로 네 부분으로 된 서버 이름에서 서버 이름을 제거하고 삭제해야합니다. 그런 다음 연결된 서버를 모두 제거 할 수 있습니다. 데이터베이스가 나중에 이동하면 연결된 서버 이름을 동의어에 다시 추가 할 수 있습니다. 알았다.
—
mathewb