2011-09-13 3 views
1

서버 이름과 함께 sql 명령을 실행하려고합니다. 여기에 예제 쿼리가 있습니다.sql server 2008 r2 "존재하지 않거나 권한이 없으므로 개체를 찾을 수 없습니다."

SELECT * FROM [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 
INSERT INTO [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 values('BALA') 

위의 두 가지가 성공적으로 실행되었습니다. 나는 다음과 같은 명령을 실행할 때 오류 메시지를 반환 있도록 제출 내 표 ID를 자동 증가는

SET IDENTITY_INSERT [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 ON 
INSERT INTO [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 values(2,'KARTHIK') 
SET IDENTITY_INSERT [SYSTEM1\SQLEXPRESS].Sample1.dbo.table1 OFF 

당신을 존재하거나하지 않기 때문에 객체 [SYSTEM1 \ SQLEXPRESS] .Sample1.dbo.table1를 찾을 수 없습니다 권한이 없습니다. 이 문제를 해결하는 방법을

+0

덕분에 친구. 나는 jnk에서 해결책을 얻었다. – Karthik

답변

4

Looks like this is a known issue with linked servers. 해결 방법은 다음과 같습니다

exec [Server-SQL].MyDatabase.dbo.sp_executesql N'SET IDENTITY_INSERT 
Sample1.dbo.table1 ON; 
INSERT dbo.table1 values(2,''KARTHIK''); 
SET Sample1.dbo.table1 OFF;' 

는 기본적으로 RPC 대신 직접 쿼리로 명령을 실행합니다.

+0

글쎄, 마찬가지로 :-) –

+0

개체 이름 '[SYSTEM1 \ SQLEXPRESS] .Sample1.dbo.table1'에는 접두사의 최대 개수 이상이 포함되어 있습니다. 최대 값은 2입니다. – Karthik

+0

@karthik - 내 잘못하면 연결된 서버에 로컬로 실행 중이므로 서버 접두사를 제거하십시오. 나는 갱신 할 것이다. – JNK

3

AFAIK 명령을 로컬로 실행해야합니다. 당신이 수행하는 저장 프로 시저를 생성하지 않는 이유는 다음 저장 프로 시저 말할 수 :

SET IDENTITY_INSERT dbo.Table1 ON; 

그리고 당신은 사용하여 프로 시저를 호출 할 수 있습니다

EXEC [SYSTEM1\SQLEXPRESS].Sample1.dbo.MyProcedure; 
+0

+1 - ACTUAL 문제를 해결하는 다른 답변은 – JNK

+0

@JNK입니다. 동의합니다. 되돌아 보면 내 대답은 전혀 도움이되지 못했습니다. 자신의 대답을 하나 downvote 수 있습니까? – PaulStock

+0

@ Paul - 아니지만 삭제할 수 있습니다. – JNK

관련 문제