我是一名SQL Server新手。我将存储在我的文件系统中的包导入我的SQL Server 2008R2数据库。后来我从文件系统中删除了包。但是,程序包继续保留在SQL Server数据库中,甚至执行!
我知之甚少意味着这不应该发生,因为即使SQL Server也会引用存储在文件系统中的那个包。所以我的问题是:这种行为是否正常?如果不是可能的原因
Cheerio
答案 0 :(得分:1)
当软件包在文件系统上时,它就能很好地放在你想要的地方。当程序包在数据库中时,如果您使用程序包部署模型,它将存储在{2008; 2008R2和2012的dbo.sysssispackage
中的msdb目录中。 2005年使用dbo.sysdtspackages90
和项目部署模型中的2012将使用SSISDB
目录。
所以现在你知道它在一个表中,这是代理能够引用的。如果您想要删除它,请调用适当的存储过程。在这种情况下,它是msdb.dbo.sp_ssis_deletepackage
它需要2个参数,包的名称和包所在的文件夹。根文件夹是00000000-0000-0000-0000-000000000000
。否则,使用正确的包名运行以下查询,它将生成删除所述包所需的调用。
与往常一样,在盲目运行之前评估该声明。
SELECT
P.name
, P.folderid
, 'EXECUTE msdb.dbo.sp_ssis_deletepackage @name = ''' + P.name + ''', @folderid = ''' + CAST(P.folderid as varchar(50)) + '''' AS run_me
FROM
dbo.sysssispackages AS P
WHERE
P.name = 'Package'
答案 1 :(得分:0)
经过多次思考并询问一些严肃的sql-savvy的人,我觉得这种行为非常自然。创建这两个文件夹只是为了区分获取包的位置。导入后,包将保存在数据库中。然后它的位置并不重要。在我的示例中,创建了包的副本并将其存储在数据库中。 谢谢大家的帮助和时间:)