我有两个不同的脚本,一个由我创建,一个由我的同事创建,即使用相同的快照。
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.".
答案 0 :(得分:0)
答案比我想象的要简单。
您在SSIS作业的SQL服务器中创建作业时正在运行的SSIS脚本上设置活动用户,但这不是您可能拥有安全用户的唯一位置。
您还需要检查在SSIS脚本中实际建立的连接,以确保允许您用于连接数据库的用户删除快照。
一样容易(当你知道什么是错的时候)。