0
votes

Propriétés de la base de données

Il existe plusieurs instances SQL Server sur le réseau de la société, toutes sont nommées de manière unique, cependant, chacune d'un même nom de base de données, comme ClientDB. Je sais qu'il y a un identifiant de base de données pour chacun mais je me demandais s'il y avait un identifiant unique qui fonctionnerait dans des cas? Maintenant que j'écris cela, cela sonne bien idiot, comment une nouvelle instance connaît-elle des noms de base de données déjà là-bas? Je demande parce que je recueille des informations sur toutes nos bases de données telles que le nom, le créateur, la taille, la dernière sauvegarde, etc. dans une table et qu'il est confus, car de nombreux enregistrements ont le même nom de base de données. Peut-être qu'il y a un identifiant d'instance ou une base de données quelque part ou dois-je juste avoir une trace de l'instance et le nom de la base de données pour identifier un enregistrement? Merci pour votre aide.


1 commentaires

Il existe un «nom de la machine» et un «nom du serveur» pour SQL Server, peut-être que c'est ce que vous recherchez. Docs. microsoft.com/en-us/sql/t-sql/functions/.../a>


3 Réponses :


0
votes

Vous devez préparer le nom de la base de données avec l'hôte ". L'hôte est également connu comme:

  • "Nom de la machine", "Nom d'hôte", "Nom d'hôte".
  • "serveur" ou "nom du serveur", "nom de l'ordinateur".
  • "BOÎTE".
  • le "VM" ou "Nom VM".

0 commentaires

0
votes

Ça s'appelle Clé composite . Étant donné que le nom de la base de données n'est pas suffisant pour l'identifier de manière unique parmi vos actifs, vous devez apporter des attributs supplémentaires à la table.

  • @@ Server_Name Pour identifier une instance de MS SQL Server sur une case, ainsi que le nom de la case;
  • db_name () ou a sélectionnée à partir de sys.databases pour obtenir le nom de la base de données sur cette instance.

    Ensemble, ils comprennent une clé suffisamment unique pour la plupart des cas. Notez cependant que vous pourriez toujours obtenir des collisions si:

    • Il existe plusieurs domaines publicitaires de votre réseau et certains serveurs ont des noms en double dans différents domaines. Une mauvaise décision de conception de réseau par lui-même; J'essaierais de passer des noms d'instance aux adresses IP ici, ou d'ajouter la fonction par défaut_domaine () si vos versions SQL Server le supportent;
    • Vous avez des instances SQL en cluster. Pas une collision en soi, plutôt un duplicata dans vos dossiers; Assurez-vous simplement que vous n'utilisez pas les noms des nœuds de cluster ou de conserver une liste séparée de clusters / des instances TOMENDON pour résoudre ce problème. Je n'ai pas vraiment vérifié cela moi-même, pourrait être faux ici.

0 commentaires

0
votes

Le service_broker_guid code> propriété attribué à chaque base de données (autre que maître code> et modèle code>) lors de la création dans SQL Server pourrait satisfaire votre besoin . Le Service_borker_guid code> est un Identificateur unique global , autrement appelé uuid .

the page wikipedia dit ce qui suit sur les chances que vous trouverez deux de la même manière Valeur dans, et out, de votre réseau: P>

Bien que la probabilité qu'un UUID soit dupliqué ne soit pas zéro, il est assez proche pour zéro pour être négligeable p> blockQquote>

La requête ci-dessous prendra le GUID que vous recherchez. P>

+----------------+----------+--------------------------------------+
| host_nm        | db_nm    | service_broker_guid                  |
+----------------+----------+--------------------------------------+
| MY_SERVER_NAME | ClientDB | 9B7C1BF1-022D-423D-9780-88B555459868 |
+----------------+----------+--------------------------------------+


0 commentaires