Wie zum ausführen von gespeicherten Prozedur für eine andere DB?
Ich habe eine gespeicherte Prozedur, die sollten in der Lage sein, um ausgeführt werden auf einer Tabelle von einer Datenbank auf MS Sql Server. Die meisten der Kombination von EXEC und Anweisungen nicht Folge nichts. Hier wird die gespeicherte Prozedur:
CREATE PROCEDURE [dbo].[usp_TrimAndLowerCaseVarcharFields]
(
@Database VARCHAR(200),
@TableSchema VARCHAR(200),
@TableName VARCHAR(200)
)
AS
BEGIN
DECLARE @sSql VARCHAR(MAX)
SET @Database = '[' + @Database + ']'
SET @sSql = ''
-- Create first part of a statement to update all columns that have type varchar
SELECT @sSql = @sSql + COLUMN_NAME + ' = LOWER(RTRIM(' + COLUMN_NAME + ')), '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'varchar'
AND TABLE_CATALOG = @Database
AND TABLE_SCHEMA = @TableSchema
AND TABLE_NAME = @TableName
SET @sSql = 'UPDATE ' + @Database + '.' + @TableSchema + '.' + @TableName + ' SET ' + @sSql
-- Delete last two symbols (', ')
SET @sSql = LEFT(@sSql, LEN(@sSql) - 1)
EXEC(@sSql)
END
Bitte Ratschläge was ich zu tun habe, um es auszuführen auf [OtherDB].[TargetTable].
InformationsquelleAutor Oleg Sakharov | 2011-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sich voll qualifizieren sich die beiden Tabellen und gespeicherte Prozeduren. In anderen Worten, können Sie dies tun:
Es scheint, Sie tun dies in Ihrer proc auch schon.
Können Sie auch EXEC eine gespeicherte Prozedur mit den Vollständig Qualifizierten Namen - z.B.
Ehrlich, Ihr proc-sieht gut aus, erhalten Sie Fehlermeldungen? Wenn ja, bitte posten. Auch, stellen Sie sicher, dass Ihre Benutzer Zugriff auf die anderen DB.
EXEC
unterstützt auchAT
für die Ausführung von Befehlen an Verbindungsserver.4 Teil Benennung z.B. exec [linkedserver].[Datenbank].[schema].[proc]
InformationsquelleAutor Code Magician
Den Namen der Tabelle in der Abfrage verwendet wird, ist falsch, es schaut in die gleiche Datenbank, aber Sie müssen sich der Blick vom anderen Datenbank. So wird die Anfrage wie folgt:
Den TargetDB wird derselbe sein wie Ihre Weitergabe Datenbank (@Database)
Wenn Sie möchten, verwenden Sie [TargetDB] dynamisch, dann müssen Sie zum generieren von sql(@sSql) und das ausführen der sql-Zeichenfolge.
InformationsquelleAutor Elias Hossain
In diesem Fall habe ich sugest, um die 2 sp ' s in SQL Server:
sp_MSforeachtable
dokumentierte sp_msforeachdb
weitere Informationen, Lesen Sie bitte den Artikel in hier.
hoffe, dass dies helfen.
Komplette script:
InformationsquelleAutor Ricardo Figueiredo