从分片中检索数据时出现Azure SQL错误 - 用户

时间:2017-03-15 17:20:20

标签: azure azure-sql-database sql-server-2014 stored-functions

我正在尝试进行跨数据库查询,但我的错误建议我甚至无法连接到我的外部数据源。

我的确切错误消息如下:

Error retrieving data from shard [DataSource=xxxxxxxxxxxxxxxxxx Database=CRDMPointOfSale_Configuration].  The    underlying error message received was: 'Login failed for user 'CRDMAdmin'.'.

以下是我的'Create Database Scoped Credential'。

CREATE DATABASE SCOPED CREDENTIAL CRDMCred
WITH IDENTITY = 'CRDMAdmin',
SECRET = 'xxxxxxxxxx';
GO

以下是我的'创建外部数据源'。

CREATE EXTERNAL DATA SOURCE CRDM_Configuration
 WITH (
 TYPE=RDBMS,
 LOCATION='xxxxxxxxxxxxxxxxxxxxx',
 DATABASE_NAME='CRDMPointOfSale_Configuration',
 CREDENTIAL = CRDMCred
);

下面你可以看到我的execute remote语句在一个存储过程中。我在网上看到的其他地方。

CREATE PROCEDURE [admin].[InsertThreadProcessingDataIntoLoadTable]
(
  @ThreadID         VARCHAR(100)
, @DataLoadSchemaID INT     OUTPUT
, @DateFrom         CHAR(8) OUTPUT
, @DateTo           CHAR(8) OUTPUT
, @DatabaseName     VARCHAR(100)
)

AS BEGIN
SET NOCOUNT ON
DECLARE @IsBatchLoad BIT

SET @IsBatchLoad = CASE 'NO' WHEN 'YES' THEN 1 ELSE 0 END


Exec  sp_execute_remote @data_source_name = N'CRDM_Configuration',
@stmt = N'SELECT @DateFrom = CONVERT(CHAR(8),FromDate,112), @DateTo =         CONVERT(CHAR(8),DATEADD(DAY,1,ToDate),112)
FROM [admin].[GetFromAndToDatesForDatabase] (@DatabaseName,  @IsBatchLoad,NULL)',
@params = N'@DatabaseName VARCHAR(100), @IsBatchLoad BIT',
@DatabaseName = 'CRDMPointOfSale', @IsBatchLoad = 1;

END

正如您在上面看到的那样,execute remote包含一个SELECT语句,FROM是一个函数被调用的结果([admin]。[GetFromAndToDatesForDatabase])来自不同的数据库,这就是为什么我有一个'Exec sp_execute_remote ' 包起来。

我不应该在不直接呼叫SP时指定参数吗?我做错了什么?

0 个答案:

没有答案