2016-12-21 1 views
0
USE [MyDB] 

GO 
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'1.2.3.4\SQL2014', @useself = 'FALSE', @rmtuser = 'Client', @rmtpassword = 'Password'; 
GO 

--insert into TravelData 
EXEC [1.2.3.4\SQL2014].[TravelDB].[schema1].[GetTravelData] 1, '28-Nov-2016 16:00', '28-Nov-2016 19:00' 

GO 

このクエリは正常に動作し、リモートサーバーの結果がVisual Studioにリストされているproc呼び出しに格納されています。私はINSERT INTO行のコメントを解除した場合、私はエラーを取得:どのようにリモートのストアドプロシージャを呼び出すことができますが、結果を保存する権限はありませんか?

OLE DBプロバイダー「SQLNCLI11」リンクサーバーを「1.2.3.4 \ SQL2014」パートナートランザクションマネージャは、リモート/ネットワークトランザクションのためにその サポートを無効にしている 返されたメッセージ」 "。リンクサーバー "1.2.3.4 \ SQL2014"のOLE DBプロバイダ "SQLNCLI11"が分散トランザクションを開始できなかったため、操作は になりませんでした。

は私がprocedureを呼び出しますが、データを何もしないために許可されてることを粒状と私はちょうど微調整するために彼らのDBAに依頼する必要があるセキュリティ権限がある...コーダーないDBAよ設定?または、このエラーは潜在的に他のものをマスキングしていますか?回避策はありますか?

答えて

1

分散トランザクション機能をDBサーバーで有効にする必要があります。コマンドは、両方のサーバーからのリソースを必要とするので - -

あなたはこのguide

+0

おそらくあなたは、それは私が行うことができるものではありませんすなわち、それらは、リモートサーバー上で有効にする必要がありますを意味し、私は有効にするには、その管理者/ DBAを必要としますそれ? –

+0

@ Mr.Boy:これはできません。問題のサーバーの管理者はこれを行う必要があります – TheGameiswar

1

サーバーには、リモートサーバーとdistributed transactionにローカル・トランザクション(TravelDataへの挿入)を促進しようとしている見ることができますが、リモートサーバーウォンこれが起こることを許してはいけません。

[1.2.3.4\SQL2014]リンクサーバーの "Enable Promotion of Distributed Transactions"プロパティをfalseに設定すると、この現象を回避できます。

あなたは、次のコマンドを使用して、T-SQLを介してこれを行うことができます。

EXEC master.dbo.sp_serveroption 
    @server=N'1.2.3.4\SQL2014', 
    @optname=N'remote proc transaction promotion', 
    @optvalue=N'false' 
+0

私はこれが何を意味するのか分かりません(教育的な推測:トランザクションが1つのユニットに結合された最適化ですリモートサーバーへ)、それは動作するようです –

+1

@ Mr.Boy - 分散トランザクションの説明についてはhttps://msdn.microsoft.com/en-gb/library/ms188386.aspxを参照してください。 –

+0

@ Mr.Boy - 何が起こっているのか、もう少し説明を加えました。 –

関連する問題