Comment créer un alias pour une instance SQL Server nommée

8

Sur mon ordinateur de développeur, j'ai une instance SQL Server nommée developer_2005 . Dans les fichiers de paramètres de ressources d'une application C # que nous créons, le nom de l'instance est défini sur foobar (pas vraiment, mais juste à titre d'exemple). Ainsi, lorsque j'exécute l'application (en débogage ou en version), elle essaie de se connecter à un serveur SQL sur localhost, nommé foobar .

Je me demande s'il est possible de créer un alias ou quelque chose comme ça, afin que l'application trouve réellement un SQL Server sur localhost nommé foobar , mais il se connecte en fait à l'instance nommée developer_2005 .

La chaîne de connexion dans le fichier de configuration de l'application est Data Source = localhost \ foobar; Initial Catalog = barfoo; Integrated Security = True avec le nom de fournisseur System.Data.SqlClient . Si je change localhost \ foobar en localhost \ developer_2005, l'application peut se connecter comme il se doit. Comment puis-je créer un alias pour ne pas avoir à modifier la chaîne dans le fichier?

J'ai essayé, dans SQL Server Management Studio, de créer un enregistrement de serveur avec le nom de serveur enregistré "localhost \ developer", mais cela ne semble pas faire de bien. Je ne sais même pas ce que cela a vraiment fait ... Mais j'ai découvert SQL Server Configuration Manager \ SQL Native Client COnfiguration \ Aliases. Et je suppose que c'est là que réside la solution. Mais je n'arrive pas à comprendre comment en ajouter un nouveau ... Lors de la création d'un nouveau, je dois fournir le nom d'alias, le numéro de port, le protocole et le serveur, et je n'ai pas vraiment la moindre idée de ce qu'il faut mettre l'un d'eux.

Svish
la source

Réponses:

6

Nom d'alias: foobar (le nom que vous souhaitez utiliser)

Nom du serveur: le nom réel de votre ordinateur ou l'adresse IP (pas localhost ou 127.0.0.1)

Protocole: TCP / IP

Port: celui par défaut (1433)

Assurez-vous que le protocole TCP / IP est activé (désactivé par défaut)

Modifiez votre chaîne de connexion pour utiliser votre nouvel alias (Data Source = foobar)

Hakan Winther
la source
Le nom du serveur, localhost , est correct. C'est le nom d'instance nommé pour lequel je dois créer un alias.
Svish
Ensuite, vous devez utiliser localhost \ instancename comme nom de serveur.
Massimo
qu'en est-il du nom d'alias? Dois-je utiliser localhost \ developer_2005 comme nom de serveur et localhost \ foobar comme alias? Ça marchera?
Svish
J'ai mieux vérifié ... on dirait que vous pouvez vraiment faire ça. Au moins dans SQL Server 2008 (je ne sais pas si cela fonctionnera en 2005).
Massimo
J'ai édité ma réponse, essayez ça.
Massimo
1

Vous avez raison, ce que vous devez faire est de définir un nouvel alias dans la configuration Native Client.

  • Nom d'alias: l'alias que vous souhaitez créer
  • Nom du serveur: le nom réel du serveur
  • Protocole: TCP / IP
  • Port: celui par défaut (1433)

Essaye ça:

  • Nom d'alias: localhost \ foobar
  • Nom du serveur: localhost \ developer_2005
  • Protocole: TCP / IP
  • Port: 1433
Massimo
la source
Et c'est là que je suis. Mais que dois-je mettre dans ces domaines? Je ne comprends pas tout à fait ...
Svish
La chaîne de connexion dans le fichier de configuration est Data Source = localhost \ foobar; Initial Catalog = barfoo; Integrated Security = True avec le nom du fournisseur System.Data.SqlClient . Pour qu'il se connecte correctement, je dois changer localhost \ foobar en localhost \ developer_2005 . Comment puis-je créer un alias pour ne pas avoir à le faire?
Svish
Cela ne peut pas être fait; votre chaîne de connexion recherche une instance nommée appelée foobar , les alias ne peuvent être utilisés que comme noms de niveau supérieur, et non comme ils ont été nommés eux-mêmes.
Massimo
Il n'y a donc aucun moyen de résoudre cela, autre que de changer la chaîne de connexion dans l'application?
Svish
J'ai mieux vérifié ... on dirait que vous pouvez vraiment faire ça. Au moins dans SQL Server 2008 (je ne sais pas si cela fonctionnera en 2005).
Massimo