0
SQL Server에서 Azure로 마이그레이션 할 때 현재 데이터베이스 간 호출 문제가 있습니다. 나는 sp_GetProfileDescription이라는 SP를 db1과 db2 모두에 있습니다. db1에 'sp_GetProfileDescription'이 호출되고 일부 매개 변수가 전달됩니다. 가 그럼 난 동적 DB2의 이름을 선택합니다 (이 호출 무엇 프로파일에 따라 다르다) 다음 DB2 년대 'sp_GetProfileDescription 전화'과의 매개 변수를 함께 전달합니다.외부 데이터 소스를 만들 때 DATABASE_NAME을 설정할 때 오류가 발생했습니다.
는 SQL 서버에서 나는 다음과 같이했다 :
이@ConId int,
@ProfileId varchar(100),
@LanguageCode char(2) = NULL,
@Description nvarchar(MAX) OUTPUT
...
...
...
DECLARE @dbName varchar(100) = NULL
SELECT
@dbName = [providerDatabaseName]
FROM
[Con] WHERE id = @ConId
IF @dbName IS NOT NULL
BEGIN
DECLARE @sql nvarchar(4000) = N'USE [' + @dbName +']; EXEC sp_GetProfileDescription @ProfileId, @LanguageCode, @Description OUTPUT'
EXEC sp_executesql @sql, N'@ProfileId varchar(100), @LanguageCode char(2), @Description nvarchar(MAX) OUTPUT', @ProfileId, @LanguageCode, @Description OUTPUT
END
아니, 난 아래처럼하고 있어요하지만 난라는 오류 받고 있어요 푸른로 마이그레이션 "근처 잘못된 구문이 '을 @dbname'." 그리고 그것은 "DATABASE_NAME = @dbName"을 가리키며 데이터 소스를 생성합니다.
@ConId int,
@ProfileId varchar(100),
@LanguageCode char(2) = NULL,
@Description nvarchar(MAX) OUTPUT
...
...
...
DECLARE @dbName varchar(100) = NULL
SELECT
@dbName = [providerDatabaseName]
FROM
[Con] WHERE id = @ConId
IF @dbName IS NOT NULL
BEGIN
CREATE EXTERNAL DATA SOURCE ProviderDB
WITH
(
TYPE=RDBMS,
LOCATION='mydomain.database.windows.net',
DATABASE_NAME= @dbName,
CREDENTIAL= dbadmin
);
EXEC sp_execute_remote @data_source_name = N'ProviderDB',
@stmt = N'EXEC sp_GetProfileDescription @ProfileId, @LanguageCode, @Description OUTPUT',
@params = N'@ProfileId varchar(100), @LanguageCode char(2), @Description nvarchar(MAX) OUTPUT',
@[email protected], @[email protected], @[email protected] OUTPUT;
END
문제
는 DATABASE_NAME를 설정할 때 나는 vaiable을 사용하고 있다는 것 같다. 하드 코딩하면 작동하는 것처럼 보이지만 동적으로 설정해야합니다. 어떤 도움이 필요합니까?