- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要求是通过 SSIS 调用 Web 服务,并从 SQL Server Service Broker 激活的存储过程调用 SSIS。
这是我目前正在做的事情:
队列
CREATE QUEUE [schema].[ProccessingQueue] WITH STATUS = ON , RETENTION = OFF , ACTIVATION ( STATUS = ON , PROCEDURE_NAME = [schema].[usp_ProccessingQueueActivation] , MAX_QUEUE_READERS = 10 , EXECUTE AS N'dbo' ), POISON_MESSAGE_HANDLING (STATUS = ON)
我的存储过程:
ALTER PROCEDURE [schema].[usp_ProccessingQueueActivation]
WITH EXECUTE AS CALLER
AS
BEGIN
SET NOCOUNT ON;
<snip declaration>
BEGIN
BEGIN TRANSACTION;
WAITFOR
(
RECEIVE TOP (1)
@ConversationHandle = conversation_handle,
@MessageBody = CAST(message_body AS XML),
@MessageTypeName = message_type_name
FROM [schema].[ProccessingQueue]
), TIMEOUT 5000;
<snip awasome stuff>
EXEC dbo.RunSSIS <param>
DECLARE @ReplyMessageBody XML = @MessageBody;
SEND ON CONVERSATION @ConversationHandle MESSAGE TYPE [type] (@ReplyMessageBody);
END
<handle error>
COMMIT TRANSACTION;
END
END
现在这是 RunSSIS 存储过程的样子
ALTER PROCEDURE [dbo].[RunSSIS]
<params>
AS
BEGIN
DECLARE @exec_id BIGINT
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'<SSIS_package>',
@folder_name=N'<folder>',
@project_name=N'<projectName>',
@use32bitruntime=FALSE,
@reference_id=NULL,
@execution_id=@exec_id OUTPUT
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@exec_id,
@object_type=30,
@parameter_name=N'<param_Name>',
@parameter_value=<param>
SELECT @exec_id
EXEC [SSISDB].[catalog].[start_execution] @exec_id
END
现在,这将在事件查看器中引发以下异常,因为 SSISDB 环境中无法识别 Sql 服务代理激活安全上下文。
The activated proc '[schema].[usp_ProccessingQueueActivation]' running on queue '' output the following: 'The current security context cannot be reverted. Please switch to the original database where 'Execute As' was called and try it again.'
为了解决这个问题,我尝试了以下方法
所以我点击这个链接 http://www.databasejournal.com/features/mssql/article.php/3800181/Security-Context-of-Service-Broker-Internal-Activation.htm并创建了一个具有自签名证书的用户(认为它是没有权限的用户)。但它返回相同的错误,深入挖掘,我发现 [internal].[prepare_execution] 在SSISDB 在第 36 行有“REVERT”语句,抛出错误为它根本不喜欢模仿。
我的问题是
我正在使用 Windows 身份验证,并且我的凭据具有 sys_Admin 访问权限。
最佳答案
我认为您可以取出“WITH EXECUTE AS CALLER”,所有内容(过程以及最终被调用的包)都将在 Service Broker 的安全上下文下运行。只要该上下文有权执行您想做的事情,就应该没问题。
我没有以这种方式使用 Service Broker,但我对 SQL 代理触发的作业做了同样的事情。只要代理的安全上下文具有 procs/packages 中所需的权限,一切就可以正常运行。我们的服务使用网络帐户,因此服务器之间也能正常工作。
关于sql-server - 从 SQL Server Service Broker 调用带有 SSISDB 实现的 SSIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142527/
当我设置它时,我忽略了保留期。我的数据库变得非常大,所以我想减小它的大小。如果我只是更改保留期(它是 365),则会导致 SSIS 运行我的包时出现问题。我什至以小增量更改它,但删除语句会创建锁,从而
我正在查询 ssis catlog 以查找目录中所有包的名称。 Folder1项目中只有6个包,但查询却给出了9条记录 1. SELECT P.NAME FROM SSISDB.internal.p
我对 SSIS 还是很陌生。我已经弄清楚如何通过连接到集成服务从服务器下载包。如何从 SSISDB 下载包?背景:我们有很多以前的人创建的包。所有包都应该保存在我们共享驱动器上的相同文件夹结构中。但是
我们要求用户使用代理帐户并引用输入参数来执行 SSIS 包。 以下演示了用于调用包执行的语法... DECLARE @ExportID INT = 1; DECLARE @ExecutionID IN
我刚刚安装了 SQL Server 2012,我想在 Integration Services Catalog 中创建一个目录以获取 SSISDB 数据库,但出现以下错误 任何帮助将不胜感激。 最佳答
我正在尝试将 SSIS 2012 项目部署到新建 SQL Server 计算机上的 SSIS 目录。创建文件夹时,它会抛出错误并显示以下消息。 Failed to create appdomain s
我无法在安装在 Linux RHEL 7 服务器上的 MS SQL Server 上创建 SSIS 数据库目录。虽然我已经在 Linux RHEL 7 上安装了 SSIS。 每当我尝试创建 SSIS
我目前正在从SQL Server 2008R2升级到2014(均为Enterprise)。有大量的SSIS作业正在生产中,需要迁移。我正在设法掌握今后应如何管理SSIS作业。 在2008R2中,我将始
要求是通过 SSIS 调用 Web 服务,并从 SQL Server Service Broker 激活的存储过程调用 SSIS。 这是我目前正在做的事情: 队列 CREATE QUEUE [s
我是一名优秀的程序员,十分优秀!