0

Database1 にストアド プロシージャを作成したとします。クエリは Database2 にアクセスしていました。
本番環境には、開発環境と同じデータベース名がありません。
ここで、Database2 を Database_Prod2 に変更するために、すべての手順を確認する必要があります。

これはエラーが発生しやすいです。クエリでデータベース名を使用しないようにする方法。またはデータベース名が異なる必要がある場合、この展開の問題を回避するにはどうすればよいですか?

SELECT *
FROM [dbo].[MyTable] tab1
INNER JOIN [DB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID 

に変更する必要があります

SELECT *
FROM [dbo].[MyTable] tab1
INNER JOIN [DB_Prod2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID 
4

2 に答える 2

0

動的ステートメントを使用します。

CREATE PROC (@DBName varchar(100)
  --other params
)
AS 
BEGIN 
DECLARE @SQL VARCHAR(MAX) =''
SET @SQL =
'
SELECT *
FROM [dbo].[MyTable] tab1
INNER JOIN ['+@DBName+'].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID 
'
EXEC(@SQL)
END
于 2013-11-10T09:05:35.530 に答える