SQL-Server déclencher problème de mise à jour de plus de serveur lié
Je voudrais mettre à jour des lignes sur le serveur lié. J'ai créé un serveur lié sur mon local SQL-Server avec cette instruction.
Je puisse mettre à jour les lignes sur l'Analyseur de Requêtes avec le code ci-dessous. Aucune erreur retournée et les lignes de mise à jour sur le Serveur Lié avec succès.
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = 'A', B = 'B'
WHERE id = 1
Mais quand je créé un déclencheur de mise à jour à ma table, sur mon serveur sql local comme ci-dessous,
ALTER TRIGGER [TriggerLocalServerTable]
ON dbo.[LocalServerTable]
FOR UPDATE
AS
DECLARE @A varchar(4)
DECLARE @B varchar(4)
DECLARE @id int
BEGIN
SELECT
@A = A,
@B = B,
@id = id
FROM inserted
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = @A, B = @B
WHERE id = @id
END
Lorsque la gâchette effectuée, retourne cette erreur comme ci-dessous,
Fournisseur OLE DB "SQLNCLI" qui y sont liées
le serveur "LinkedServer" a retourné le message
"Le gestionnaire de transactions partenaire a
désactivé son soutien pour
à distance/transactions réseau.". Msg
7391, Niveau 16, État 2, La Procédure
TriggerLocalServerTable, La Ligne 45
L'opération n'a pas pu être effectuée
parce que le fournisseur OLE DB "SQLNCLI" pour
le serveur lié "LinkedServer" n'a pas pu
pour commencer une transaction distribuée.
J'ai appliqué cette instruction de serveur local pour la résolution de problème, quelque chose a changé.
Plus de détails;
- si défini mon serveur lié avec son
adresse ip distante. - Mon serveur local et un Serveur Lié
pas dans le même domaine. - Serveur lié paramètre de Sécurité est "Être
faites en utilisant ce contexte de sécurité" - Serveur Local est la version de Windows
Server 2003 SP2, SQL Server version 2005
standart. - Serveur lié à la version de l'OS est 2008 et
SQL-Server version 2008 (64 bits). - Je ne pouvais pas accéder à distance à un serveur
avec le protocole RDP. je peux accéder à tout de sql
port (1433). - j'ai mis le serveur lié "RPC" et "RPC
"À "True" dans "Option de Sécurité".
Avez-vous une idée pour résoudre ce problème.
Merci beaucoup déjà maintenant.
Edit:
J'ai résolu ce problème. Tout d'abord, j'ai créé un déclencheur pour la mise à jour sur [TriggerLocalServerTable]. Ce déclencheur est l'insertion de nouvelles mise à jour des champs à une table locale. Cette nouvelle table à l'aide pour la mise à jour de temp données. Ensuite, j'ai créé une tâche qui s'exécute toutes les heures pour mettre à jour les champs sur LinkedServer. Ce travail obtient des données de la table temporaire mis à jour pour LinkedServer de la table de champs.
Ce Qui Concerne, Kerberos.
Vous devez vous connecter pour publier un commentaire.
Avez-vous un Coordinateur de Transactions Distribuées installé sur Windows Server? Si votre mise à jour est à l'intérieur d'une transaction, il ne fonctionnera pas sans elle.
Voir
texte du lien
Le problème ne réside avec SQL Server, il est avec le Pilote ODBC.
Problème Résolu 🙂