Verbindungsserver Fehler mit MSDTC
Zeige ich Ein Beispiel der Gespeicherten Prozedur Für die Daten der Transaktion mit "Linked Server" Zwischen-Zwei-System Über das Internet
Alter Proc [dbo].[usp_Select_TransferingDatasFromServerCheckingforExample]
@RserverName varchar(100), ----- Server Name
@RUserid Varchar(100), ----- server user id
@RPass Varchar(100), ----- Server Password
@DbName varchar(100) ----- Server database
As
Set nocount on
Set Xact_abort on
Declare @user varchar(100)
Declare @userID varchar(100)
Declare @Db Varchar(100)
Declare @Lserver varchar(100)
Select @Lserver = @@servername
Select @userID = suser_name()
select @User=user
Exec('if exists(Select 1 From [Master].[' + @user + '].[sysservers] where srvname = ''' + @RserverName + ''') begin Exec sp_droplinkedsrvlogin ''' + @RserverName + ''',''' + @userID + ''' exec sp_dropserver ''' + @RserverName + ''' end ')
set @RserverName='['+@RserverName+']'
declare @ColumnList varchar(max)
set @ColumnList = null
select @ColumnList = case when @ColumnList is not null then @ColumnList + ',' + quotename(name) else quotename(name) end from syscolumns where id = object_id('bditm') order by colid
set identity_insert Bditm on
exec ('Insert Into Bditm ('+ @ColumnList +') Select * From '+ @RserverName + '.'+ @DbName + '.'+ @user + '.Bditm')
set identity_insert Bditm off
set @RserverName=replace(replace(@RserverName,'[',''),']','')
Exec sp_droplinkedsrvlogin @RserverName,@userID
Exec sp_dropserver @RserverName
Wenn ich die Gespeicherte Prozedur auszuführen Bekomme ich die verschiedenen Fehler in den unterschiedlichen Zeitpunkt der Ausführung
Einiger Zeit Zeigt diesen Fehler
"The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ServerName" was unable to begin a distributed transaction."
Anderen Zeigt Diese Art von Fehler
OLE DB provider "SQLNCLI" for linked server "70.38.11.49" returned message "Protocol error in TDS stream".
OLE DB provider "SQLNCLI" for linked server "70.38.11.49" returned message "Communication link failure".
Msg 65535, Level 16, State 1, Line 0
Session Provider: Physical connection is not usable [xFFFFFFFF].
OLE DB provider "SQLNCLI" for linked server "70.38.11.49" returned message "Communication link failure".
Msg 65535, Level 16, State 1, Line 0
Session Provider: Physical connection is not usable [xFFFFFFFF].
OLE DB provider "SQLNCLI" for linked server "70.38.11.49" returned message "Communication link failure".
Msg 10054, Level 16, State 1, Line 0
TCP Provider: An existing connection was forcibly closed by the remote host.
Ich bin Mit Windows Xp Und SQL Server 2005 Client-Seite Sowie Windows server 2003 und Sql server 2005 In der Net-Server
Ich die MSDTC-in Beiden System
Wie Kann ich Dieses Problem Lösen (Und auch die Richtigen Informationen Für Die Einstellung der MSDTC in Windows XP Und Windows server 2003)
Dein code scheint nur fallen die verknüpfte server-Anmeldung und Verbindungsserver. Wo werden diese erstellt? Normalerweise würden Sie diese einrichten, einmal außerhalb der stored proc code...
InformationsquelleAutor Shimjith | 2009-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stimme mit den oben genannten posting, dass es ein Protokoll-Problem, aber es müssen möglicherweise verwenden Sie Named Pipes als Schnittstelle.
Oder es könnte sein, dass das Benutzerkonto, dass der DTC-Dienst ausgeführt wird, unter hat nur lokale Rechte und keine Rechte auf das Netzwerk. Verwenden Sie ein Domänenkonto mit ausreichenden rechten auf beiden Maschinen laufen DTC unter.
Oder es könnte sein, dass Sie brauchen, um eine verteilte Transaktion mit BEGIN DISTRIBUTED TRANSACTION-an der front-end des Prozesses.
InformationsquelleAutor Mitch Schroeter
vielleicht möchten Sie sich an:
http://support.microsoft.com/kb/306212
und
http://support.microsoft.com/kb/937517
InformationsquelleAutor Victor
Kann ich bestätigen, es ist ein Problem mit der Netzwerkkonnektivität. Ich habe das schon mal gesehen.
MSDTC-Agenten müssen in der Lage sein zu verbinden, um alle Datenbank-Instanzen, die Sie koordinieren.
Es wurde von einigen MS-zertifiziert proceure um dieses zu testen... google für die msdtc-ping.
InformationsquelleAutor
Müssen Sie auch überprüfen Sie die DNS-Namensauflösung im IP-Netzwerk-Konfiguration.
Zum Beispiel, Sie haben einen server namens server-a.mydomain.com und ein anderer namens server-b.otherdomain.com, melden Sie sich in der server- und eine ping-server-b (ohne domain).
Wenn es antwortet "Ping-Anforderung konnte nicht gefunden host-server-b. Bitte überprüfen Sie den Namen und versuchen Sie es erneut." das ist das problem.
Gehen Sie zu der Systemsteuerung > Netzwerkverbindungen > Rechte Maustaste auf die Netzwerkkarte > Eigenschaften - > Internet-Protokoll - > Eigenschaften > Erweitert > DNS > Append das DNS-suffix in Ordnung. Und hier fügen Sie die lokale Domäne: mydomain.com und fügen Sie die remote domain: otherdomain.com . Klicken Sie auf OK, bis Sie zu verlassen
Nun, wenn Sie die ping-server-b es sollte repond etwas wie:
Ping server-b.otherdomain.com [192.168.1.2] mit 32 bytes Daten:
Antwort von 192.168.1.2: bytes=32 Zeit=12ms TTL=64
Antwort von 192.168.1.2: bytes=32 Zeit=9ms TTL=64
Nun versuchen Sie erneut, um die Ausführung der verteilten Transaktion.
InformationsquelleAutor Javier Nogueira
Einen long shot, aber ich angetroffen habe ein ähnliches problem eine Weile zurück, auf MSSQL Server 7. Es stellte sich heraus, dass beide system erforderlich waren, um miteinander in Kontakt, indem Sie NetBios-Namen, und da waren Sie nicht Teil einer Domäne (aber wurden bei der Kommunikation über die WAN-wie in Ihrem Fall).
Eine einfache Lösung, zumindest um zu überprüfen, ob dies der Fall ist, wäre zu Bearbeiten lmhosts-Datei zum zuordnen der computer-name jedes seiner IP-Adresse (sowohl in der client und server).
Sehen, ein etwas wirrer Beitrag habe ich damals:
http://groups.google.com/group/microsoft.public.sqlserver.server/browse_thread/thread/2c246bd2afc7c4d9
InformationsquelleAutor