我建立了我的PC上的SSIS项目,和我连接到我们的网络(通过SQL身份验证)之外的SQL 2012服务器在执行包。 现在是时候将项目部署到同一台服务器,但我已经碰了壁。 虽然经历了内置的部署向导,我输入服务器名称(就像我已经进入它连接到数据库withing连接管理器),并得到一个“不受信任的域”错误(它需要Windows认证而非SQL认证)。
我想这也可能是相关的,我使用的参数在项目中设置特定的环境值。
如何部署一个SSIS项目外网的一个SQL Server?
我还要补充一点,在我的搜索,我没碰到过有人谁是挣扎的VPN连接(无分辨率发布)要做到这一点,是如何这通常做什么?
你有3个刀具的文件部署.ispac到SSISDB目录。
- ISDeploymentWizard.exe
- ManagedObjectModel
- TSQL
你已经在使用向导,它不工作,由于权威性的问题。 我想,即使你妈的做法,你还是会碰到权威性问题。 这使得该TSQL办法因为你拥有有效的登录,希望这会工作。
下面的代码将系列化你.ispac,创建部署文件夹,如果它不存在,部署项目,然后指定一个参数值。
在SSMS,你需要改变你的模式SQLCMD模式,查询菜单下提供。 这样做后,按Ctrl-Shift-M键调出宏观的事情,它可以让你指定的文件.ispac可以找到。
USE SSISDB
GO
IF ('$(isPacPath)' = '$' + '(isPacPath)')
BEGIN
THROW 50000, N'This script must be run in SQLCMD mode.', 1;
END
GO
-- You must be in SQLCMD mode
-- setvar isPacPath "C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac"
:setvar isPacPath "<isPacFilePath, nvarchar(4000), C:\sandbox\SSDTDeploy\TSQLDeploy\bin\Development\TSQLDeploy.ispac>"
DECLARE
@folder_name nvarchar(128) = 'TSQLDeploy'
, @folder_id bigint = NULL
-- this must match the ispac
, @project_name nvarchar(128) = 'TSQLDeploy'
, @project_stream varbinary(max)
, @operation_id bigint = NULL;
-- Read the zip (ispac) data in from the source file
SELECT
@project_stream = T.stream
FROM
(
SELECT
*
FROM
OPENROWSET(BULK N'$(isPacPath)', SINGLE_BLOB ) AS B
) AS T (stream);
-- Test for catalog existences
IF NOT EXISTS
(
SELECT
CF.name
FROM
catalog.folders AS CF
WHERE
CF.name = @folder_name
)
BEGIN
-- Create the folder for our project
EXECUTE [catalog].[create_folder]
@folder_name
, @folder_id OUTPUT;
END
-- Actually deploy the project
EXECUTE [catalog].[deploy_project]
@folder_name
, @project_name
, @project_stream
, @operation_id OUTPUT;
-- Check to see if something went awry
SELECT
OM.*
FROM
catalog.operation_messages AS OM;
-- Use this to set parameters
-- http://msdn.microsoft.com/en-us/library/ff878162.aspx
EXECUTE catalog.set_object_parameter_value
-- Use the value 20 to indicate a project parameter
-- or the value 30 to indicate a package parameter
@object_type = 20
, @folder_name = @folder_name
, @project_name = @project_name
, @parameter_name = N'' -- nvarchar(128)
, @parameter_value = NULL -- sql_variant
, @object_name = N'' -- nvarchar(260)
, @value_type = '' -- char(1)
-- Use the character V to indicate that parameter_value is a literal value
-- that will be used by default if no other values are assigned prior
-- to execution.
-- Use the character R to indicate that parameter_value is a referenced value
-- and has been set to the name of an environment variable.
-- This argument is optional, the character V is used by default
如果你参加了SQL传递峰会2012会议上,我演示了这个在我的谈话2012部署模型 ,但我没有覆盖参数的一部分。 我认为,最后一次通话是正确的,但我没有验证它。 我已经挂供程序调用的文件,这样就可以定制它以您的特定需求。
样品的PowerShell实现
更新2013年8月
我学会了在我的当前客户端的东西。 我们有我们的笔记本电脑被连接到主域。 我们有客户的广告网络上的帐户。 每当我需要在客户端的世界“做”什么,我需要启动我的过程,并指示它提出我的“洋”证书。 是什么让这一切成为可能的运行方式 。 备用参考
我创建了一套使每次发射过程中,我需要批处理文件。 他们采取的形式
runas /netonly:ForeignDomain\Doppelganger "C:\windows\system32\cmd.exe"
我有一个命令提示符(上图),Visual Studio中,SSMS,PowerShell的,PowerShell的ISE和需要与他们的域名在其他一些特殊的应用程序。
使用runas办法,我已经能够部署使用所有上述方法包(以及直接从一个Visual Studio实例部署正在引进国外的凭据运行)。
当面对类似的问题,我用的一个方法是:
- 建于2012 VS项目。
- 在“* .ispac”文件复制到远程服务器。
- 双击该“* .ispac”,通过选择目标服务器和目录运行该向导。
- 具有所需的访问级别和角色的Windows帐户连接,验证该包。
唯一的问题是,如果你有多个参数,你的包是加密的,你将无法将其导入(这从警告消息显示,我没有与测试,并加密包)。
希望能帮助到你。