12
votes

Comment créer un serveur lié avec un port non par défaut

Je souhaite créer un serveur lié dans MS SQL Server 2000 sur un serveur MS SQL 2005 qui fonctionne sur le port X (pas le port par défaut 1433). Mais cela ne fonctionne pas, car je ne peux pas spécifier le port n'importe où!

Utilisation SQLCMD (Spécification du port x), je peux me connecter au serveur sans problèmes - mais je ne peux pas la configurer en tant que serveur lié.

Comment cela peut-il être fait?


0 commentaires

5 Réponses :


9
votes

Dans la nouvelle boîte de dialogue du serveur lié, choisissez "Autre source de données", sélectionnez "Microsoft Ole DB Fournisseur pour SQL Server" comme nom de fournisseur, puis utilisez-le comme votre chaîne de fournisseur: xxx

Remplacez l'IP et "1433" avec votre numéro IP et votre numéro de port.

Plus d'informations sur les chaînes de connexion: http://support.microsoft.com/kb/238949


2 commentaires

Ça marcherait! Savez-vous cependant qu'il y a un moyen de faire ce travail avec le fournisseur SQLNCLI?


Je n'ai pas essayé moi-même, mais vous pouvez essayer d'utiliser le "SQL Server Configuration Manager" pour créer un alias, définir le numéro IP et Port ici. Utilisez ensuite cet alias dans votre chaîne de connexion SQLNCLI. L'inconvénient est que chaque ordinateur client devra avoir ceci. Si ce n'est que deux serveurs liés, cela devrait fonctionner.



14
votes

Une autre façon d'y parvenir (en supposant que vous ayez configuré 8080 dans SQL Server) est avec le code suivant:

EXEC sp_addlinkedserver 'myserver', '', 'SQLNCLI', 'xx.xx.xx.xx,8080'

EXEC sp_addlinkedsrvlogin 'myserver', 'FALSE', NULL, 'user', 'pwd'


0 commentaires

7
votes

Basé sur la suggestion de Shane, l'ajout d'un alias a fonctionné pour moi.

(SQL Server 2008 R2):

  • Ouvrez SQL Server Configuration Manager
  • Développer "SQL Server Configuration Manager (local)"
  • Développez "SQL Native Client 10.0 Configuration (32 bits)"
  • Cliquez sur "Alias"
  • Cliquez avec le bouton droit de la souris dans la liste des alias de droite et choisissez "Nouveau alias"
  • "nom d'alias" est ce que vous voulez référencer le serveur lié comme.
  • "PORT NO" est votre port non par défaut.
  • "protocole" dépend, mais vous pouvez la laisser probablement laisser ceci comme "TCP / IP".
  • "SERVER" est l'adresse du serveur que vous essayez de vous connecter (non compris du port).

    (Répétez les étapes de "Configuration du client native SQL Native 10.0" (moins le texte "32 bits")

    Ajout d'un alias de cette façon m'a permis d'ajouter un serveur lié avec le type de serveur comme "SQL Server", sans configurer les options du fournisseur, etc.


0 commentaires

0
votes

Notez que les requêtes en 4 parties sembleront similaires à celles-ci:

  SELECT * FROM [SQLSERVER,14333].[DATABASE].[dbo].[Table1]


0 commentaires

0
votes

Je devais le faire aujourd'hui également (ajoutez un serveur lié avec un port non par défaut). Dans mon cas, il s'agissait d'un serveur lié SQL Server 2014 à un serveur SQL 2016.

Étapes à l'aide de SQL Server Management Studio:

  1. Ouvrez SSMS et accédez aux objets serveur> Serveur lié> Nouveau serveur lié
  2. Utilisez ce format pour le serveur lié adresse IP-Adresse-of-Server \ Nom d'instance, port non par défaut ou, 192.168.10.5 \ dev-SQL, 25250 . L'instance Name n'est requise que si cette instance n'est pas l'instance par défaut sur le serveur Linked cible. De plus, vous pouvez remplacer l'adresse IP par nom d'hôte si le serveur lié est sur votre réseau local.

  3. Sélectionnez SQL Server pour Type de serveur

  4. Ajouter des informations d'identification requises pour vous connecter à l'aide de l'onglet Sécurité
  5. Requête le nouveau serveur à l'aide du format, comme SQLDBA spécifié ci-dessus .

     exemple d'écran

    Même chose utilisant T-SQL:

    exec maître.dbo.sp_addlinkedserver @server = N'192.168.10.5 \ dev-sql, 25250 ', @ srvProduct = N'SQL Server'

    exec maître.dbo.sp_addlinkedsrvlogin @ rmtsrvname = N'192.168.10.5 \ dev-SQL, 25250 ', @ ELEMPERYELF = N'FAlSe', @ LOCALLOGIN = NULL, @ RMTUser = N'MY_USERNAME ', @ rmtpassword = 'my_pswd'


0 commentaires