Ich versuche, einen Parameterwert in einer gespeicherten Prozedur zu verwenden. Aber aus irgendeinem Grund erhalte ich einen FehlerSQL Server Verwenden Sie Parameter in gespeicherten Prozeduren
falsche Syntax nahe @sourceDB
Der Code ich schreibe ist
CREATE PROCEDURE [dbo].[copyRecordType]
(@loggedInUserID varchar(max),
@recordTypeID int,
@sourceDB varchar(max))
AS
BEGIN
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION=servername,--server name is not the issue
DATABASE_NAME= @sourceDB,
CREDENTIAL= AppCred--credential is also not the issue
);
END
Aber wenn ich den Wert harter Code für Database_Name
es funktioniert fein. Zum Beispiel
CREATE PROCEDURE [dbo].[copyRecordType]
(@loggedInUserID varchar(max),
@recordTypeID int,
@sourceDB varchar(max))
AS
BEGIN
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION=servername,
DATABASE_NAME= 'test',
CREDENTIAL= AppCred
);
END
Kann mir jemand sagen, was ich falsch mache?
Ich verwende SQL Server 2016 Management Studio. Die Datenbank befindet sich auf einem Azure-Server.
Ziemlich sicher, dass Sie dynamische sql dafür verwenden müssten. –
Die meisten DDLs können nicht parametrisiert werden. Einschließlich dieses. –
Ich würde fragen, warum Sie eine externe Datenquelle in einer gespeicherten Prozedur an erster Stelle erstellen möchten. Dies wird beim zweiten Mal fehlschlagen, wenn Sie die Datenquelle löschen. –