Je souhaite interroger plusieurs bases de données dans SQL Server. J'ai donc pensé que je pouvais créer une variable appelée @DBNAME et la transmettre à une requête de la manière suivante (mais travail pas).Transmettre une variable au nom complet en tant que base de données dans une requête SQL
Cela se fera à l'intérieur d'une boucle où DBNAME est utilisé comme compte sur dbid .. mon compte fonctionne et il imprime @DBNAME comme toutes les bases de données de production .. mais je ne peux pas l'obtenir sur plusieurs requêtes bases de données!
IF EXISTS (SELECT 1 de @ DBNAME.INFORMATION_SCHEMA.TABLES
OU TABLE_TYPE = 'BASE TABLE' ET TABLE_NAME = 'DataArea') SELECT 'GETIN' AS res AUTRE SELECT 'Aaargh' AS res - -SELECT * A partir de DataArea AS res ELSE SELECT NULL AS res;
Merci pour l'aide. J'ai déclaré ce qui suit comme ma variable @script: select @script = "SELECT 1 FROM '+ @DBNAME +'. ' + @tablename + 'OÙ TABLE_TYPE =' BASE TABLE » ET TABLE_NAME = 'DataArea' » je pense qu'il est très bien avec cela, mais quand ajouter ce qui suit, il n'aime pas l'exécutif IF EXISTS exec sp_executesql @script dit Msg 156, niveau 15, état 1, ligne 20 Syntaxe incorrecte près du mot-clé 'exec'. –
Au lieu de exec ..., sélectionnez @script et vous verrez le script final que SQL va essayer et traiter – u07ch
Il ne l'a pas: Nom de colonne non valide 'SELECT 1 FROM' + @DBNAME + '.' + @tablename + 'WHERE TABLE_TYPE =' BASE TABLE 'et TABLE_NAME =' DataArea ''. –