在SSIS

时间:2016-12-09 09:05:25

标签: sql sql-server ssis snapshot

我有两个不同的脚本,一个由我创建,一个由我的同事创建,即使用相同的快照。

16.00(或下午4点)由我编码。 脚本1 - 删除快照(如果存在),创建新快照 - 执行代码。

04.00(或凌晨4点)由Collegue编码 脚本2 - 删除快照(如果存在),创建新快照 - 执行代码。

这两个脚本都是SSIS脚本,它们只是存储过程的持有者(SSIS脚本实际上除了在链中执行一堆存储过程之外没有做太多其他工作)。

脚本2没有问题。 脚本1获取'快照无法删除,您无权访问或数据库中不存在快照'

如果我在SQL Studio中运行脚本1,它可以完美地工作,所以我没有拼错任何错误。

两个scrips都在SSIS引擎和JOBS引擎中的同一用户下运行。

我甚至不知道我应该从哪里开始寻找错误?有什么建议吗?

-------------编辑:添加脚本----------------

IF EXISTS(select NULL from sys.databases where name='Citybase_Snapshot')
BEGIN
    DROP DATABASE Citybase_Snapshot;
END

CREATE DATABASE CityBase_Snapshot ON
( NAME = FastighetsBok_Data, FILENAME = 'S:\Snapshots\Citybase_Snapshot.ss' )
AS SNAPSHOT OF Citybase;

----------------编辑:添加了错误消息----------------------

据我所知,这是来自SQL服务器的正常错误消息。

EXEC proc_..." failed with the following error: "Cannot drop the
database 'Citybase_Snapshot', because it does not exist or you do not
have permission.". 

1 个答案:

答案 0 :(得分:0)

答案比我想象的要简单。

您在SSIS作业的SQL服务器中创建作业时正在运行的SSIS脚本上设置活动用户,但这不是您可能拥有安全用户的唯一位置。

您还需要检查在SSIS脚本中实际建立的连接,以确保允许您用于连接数据库的用户删除快照。

一样容易(当你知道什么是错的时候)。