Aucune idée s'il est possible de créer une procédure dans une autre base de données uniquement avec T-SQL, où le nom de la base de données n'est pas connu et doit être lu depuis une table? Un peu comme cet exemple:Création d'une procédure stockée dans une autre base de données
Use [MasterDatabase]
Declare @FirstDatabase nvarchar(100)
Select Top 1 @FirstDatabase=[ChildDatabase] From [ChildDatabases]
Declare @SQL nvarchar(4000)
Declare @CRLF nvarchar(10) Set @CRLF=nchar(13)+nchar(10)
Set @SQL =
'Use [+'@Firstdatabase+']'[email protected]+
'Go'[email protected]+
'Create Proc [Test] As Select 123'
Exec (@SQL)
Voir ce que je suis en train de faire? Cet exemple échoue parce que Go n'est en réalité pas une commande T-SQL mais quelque chose reconnu par l'analyseur de requête/le studio de gestion SQL et produit une erreur. Supprimer le Go et il échoue également parce que Create Proc doit être la première ligne du script. Arrgg !!
La syntaxe de T-SQL ne vous permet pas de faire des choses comme ceci:
Créer [OtherDatabase] [dbo] [Test]
Ce qui est dommage car il travaillerait un régal.. ! Vous pouvez le faire avec les instructions Select, dommage qu'il est incompatible:
Select * From [OtherDatabase] .. [theTable]
Cheers, Rob.
Que faire si vous la première base de données de changement avec exec puis exec vous storedproc? –
Je le ferais aussi comme ceci: d'abord envoyer la partie avant "go", puis (dans une seconde instruction SQL) envoyer "créer proc ..." –