Existe-t-il une requête dans SQL Server 2005 que je peux utiliser pour obtenir l'adresse IP ou le nom du serveur?
sql
sql-server
Seibar
la source
la source
Réponses:
Le code ici vous donnera l'adresse IP;
Cela fonctionnera pour une demande de client distant vers SQL 2008 et plus récent.
Si les connexions de mémoire partagée sont autorisées, l'exécution ci-dessus sur le serveur lui-même vous donnera
<local machine>
» sera affiché dans «client_net_address».'client_net_address' est l'adresse de l'ordinateur d'où provient la demande, tandis que 'local_net_address' serait le serveur SQL (donc NULL sur les connexions de mémoire partagée), et l'adresse que vous donneriez à quelqu'un s'il ne peut pas utiliser les NetBios du serveur nom ou FQDN pour une raison quelconque.
Je déconseille fortement d'utiliser cette réponse . L'activation du shell est une très mauvaise idée sur un serveur SQL de production.
la source
Vous pouvez obtenir le [nom d'hôte] \ [nom d'instance] par:
Pour obtenir uniquement le nom d'hôte lorsque vous avez le format nom d'hôte \ nom d'instance:
Alternativement, comme l'a souligné @GilM:
Vous pouvez obtenir l'adresse IP réelle en utilisant ceci:
Source du script SQL .
la source
Le serveur peut avoir plusieurs adresses IP sur lesquelles il écoute. Si votre connexion dispose de l'autorisation de serveur VIEW SERVER STATE, vous pouvez exécuter cette requête pour obtenir l'adresse que vous avez connectée à SQL Server:
Cette solution ne vous oblige pas à débourser le système d'exploitation via xp_cmdshell, qui est une technique qui doit être désactivée (ou du moins strictement sécurisée) sur un serveur de production. Cela peut vous obliger à accorder VIEW SERVER STATE à la connexion appropriée, mais cela représente un risque de sécurité bien moindre que l'exécution de xp_cmdshell.
La technique mentionnée par GilM pour le nom du serveur est la meilleure:
la source
La plupart des solutions pour obtenir l'adresse IP via t-sql tombent dans ces deux camps:
Exécuter
ipconfig.exe
viaxp_cmdshell
et analyser la sortieRequête DMV
sys.dm_exec_connections
Je ne suis pas fan de l'option n ° 1. L'activation de xp_cmdshell présente des inconvénients en matière de sécurité, et il y a de toute façon beaucoup d'analyses impliquées. C'est encombrant. L'option n ° 2 est élégante. Et c'est une solution pure t-sql, que je préfère presque toujours. Voici deux exemples de requêtes pour l'option n ° 2:
Parfois, aucune des requêtes ci-dessus ne fonctionne, cependant. La requête n ° 1 renvoie NULL si vous êtes connecté via la mémoire partagée (connecté et exécutant SSMS sur l'hôte SQL). La requête n ° 2 peut ne rien renvoyer s'il n'y a aucune connexion utilisant un protocole de mémoire non partagée. Ce scénario est probable lors de la connexion à une instance SQL nouvellement installée. La solution? Forcer une connexion via TCP / IP. Pour ce faire, créez une nouvelle connexion dans SSMS et utilisez le préfixe «tcp:» avec le nom du serveur. Ensuite, réexécutez l'une ou l'autre des requêtes et vous obtiendrez l'adresse IP.
la source
C'est dans la variable @@ SERVERNAME ;
la source
vous pouvez utiliser une requête en ligne de commande et l'exécuter dans mssql:
la source
xp_cmdshell
est activé dans la configuration de la sécurité du serveur- Essayez ce script, il fonctionne selon mes besoins. Reformatez pour le lire.
la source
la source
Un moyen plus simple d'obtenir le nom de la machine sans \ InstanceName est:
la source
Je sais que c'est un ancien message, mais peut-être que cette solution peut être utile lorsque vous souhaitez récupérer l'adresse IP et le port TCP d'une connexion de mémoire partagée (par exemple à partir d'un script exécuté dans SSMS localement sur le serveur). La clé est d'ouvrir une connexion secondaire à votre serveur SQL à l'aide d'OPENROWSET, dans lequel vous spécifiez «tcp:» dans votre chaîne de connexion. Le reste du code construit simplement du SQL dynamique pour contourner la limitation d'OPENROWSET de ne pas pouvoir prendre des variables comme paramètres.
la source
Ad Hoc Distributed Queries
d'être activé.