我需要在运行时将值传递给 SSIS 包中的变量。显然,每次需要运行包时都打开BIDS并设置一个变量是不切实际的。我们在 SQL Server 2008 R2 上运行它。
最好的方法是什么?
例如,我们在包中使用了 3 个变量。其中 1 个在运行时填充在包中,其他 2 个需要从一开始就指定:
假设我们在包中定义了这些变量:
@Rec_Count(无需在运行时设置值 - 它将由数据流自动填充)
@Fetch_Size(包启动时应该设置一个值)
@File_Path(启动包时应该设置一个值)
用户如何在运行时设置最后两个变量?
先感谢您。
我正在使用 BID 2008 创建 SSRS 报告并有几个问题:
为什么报告上的页面布局与打印设置不同?比如我在设计模式下将报表的页面布局设置为横向,但是打印时是纵向的,报表分页很多,表格列断的方式导致报表无法使用。我们如何确保我们在屏幕上看到的内容与将要打印的内容相同(与设计的内容一致)?我花了相当多的时间来做到这一点,但没有取得太大的成功:(
我的报告篇幅比较长,共3页(设计模式)。我想在报告中有多个布局。例如,第 1、2 和 3 页横向和第 4 页纵向。报表中没有子报表。如何做到这一点?
可能的重复:
使用 SQLCMD 运行查询与使用 SSMS 运行查询
我有许多脚本可以从不同的表中查询数据并因此更新它们。我已经定义了一个批处理文件并在 sqlcmd 命令中运行它们。似乎当我直接在 SQL management studio 中运行这些脚本时,它们的运行速度比从批处理文件中调用它们时运行得更快。
这种行为有什么原因吗?
提前致谢。
我有一个将数据从 Sybase 数据库迁移到 SQL Server 的 SSIS 包。已通过 ODBC 连接建立到源数据库的连接。
如果我直接在我的机器上运行包,它会成功运行,但是如果我想通过我在本地机器(目标数据库所在的位置)上创建的 SQL Server 作业运行它,我会收到登录失败错误:
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Login failed for user 'xxx\user1'.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Cannot open database "MySybaseDatabase" requested by the login.
Run Code Online (Sandbox Code Playgroud)
我知道该作业实际上是作为“SQL Server 代理服务帐户”运行的xxx\user1
,它不同于在 ODBC 连接中设置的用户访问源数据库,但不知道为什么 odbc 连接登录没有优先并使用而不是代理服务帐户?
我在不同的网站上阅读了一些帖子,他们在谈论设置代理等,但不知道它是否与我的问题非常相关。
到源数据库的连接已通过 ODBC 建立,但由于该步骤失败,我向其中添加了 userId 和密码以强制 SQL 使用我想要的 userId 而不是 SQL Sever …
使用xp_cmdshell可能会很有帮助,有时可能是某些场景的唯一答案。我在互联网上阅读了一些帖子,认为启用xp_cmdshell可能会危及数据库/服务器的安全性。
我的问题是,我们能做些什么来降低风险吗?例如,我们是否可以设置一些限制/应用用户角色等,以提供降低风险的保障措施?
谢谢。
我在我的数据库上运行以下查询来识别碎片索引。然而,当我看到索引属于高度碎片化索引中的一些空表时,我感到很惊讶!怎么可能?我假设如果表中没有数据,索引应该是空白的并且不能被碎片化。
SELECT
a.index_id,
name,
avg_fragmentation_in_percent
FROM
sys.dm_db_index_physical_stats(NULL, NULL, NULL, NULL, N'Limited') AS a
JOIN sys.indexes AS b
ON a.object_id = b.object_id
AND a.index_id = b.index_id
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个解释吗?
先感谢您。
纳兹拉
在数据迁移过程中,我需要在写入目标表之前转换来自源系统的一些列值。
我已经获得了一个 Csharp 代码,它读取一个字符串并进行转换(这是一个复杂的字符串操作),然后返回转换后的字符串。
将此代码插入数据迁移 SQL 脚本的最佳方法是什么?我对 CSahrp 编程知之甚少,在研究了不同的站点后,发现这可以通过在 SSIS 包中添加脚本组件或将 .net 代码包装在可从 SQL Server 调用的 CLR 函数中来完成。
由于我的脚本不是 SSIS 包的一部分,我的偏好是定义一个 CLR 函数,但是可以吗?每个选项的优缺点是什么?
你还认为这个目标可以使用另一种更容易实现和维护的技术来实现吗?
如果你知道一个很好的链接,它会一步一步地向我展示这个过程,请与我分享:)
谢谢你。
我们.exe在服务器上有一个文件,比如Server1,它应该从存在于不同服务器上的 SQL Server 作业运行,例如:Server2。怎么做到呢?
我知道它是否是本地文件,我可以xp_cmdshell在 Job 步骤中使用并运行该.exe文件,但在我们的例子中,这个文件存在于不同的服务器上。如果可行,应该设置什么安全权限来实现它?
对于数据库部署,我在批处理文件中调用所有数据库架构更改并在目标数据库上运行它们。
有时我们有用于更改视图或存储过程的脚本。我想知道控制视图/sp 是否已成功更改并通过输出日志文件中的消息报告它的最佳方法是什么。
例如下面是我想要实现的伪代码:
IF
(
ALTER VIEW vw_abc
.
.
.
.
) Failed THEN
PRINT 'ALTER view vw_abc Failed'.
ELSE
PRINT 'ALTER view vw_abc Completed Successfully'
END
Run Code Online (Sandbox Code Playgroud)
输出消息将记录在由运行脚本的批处理文件生成的脚本日志文件中。
如果有任何我们可以检查的错误代码来做到这一点?任何的想法?
谢谢。
在已完成的 SSRS 报告中重命名数据集的更简单方法是什么?我在 BIDS 2008 中创建了一个报告,现在由于某些原因我必须重命名数据集名称,但在“报告数据”窗格中重命名数据集似乎不会在使用旧数据集名称的任何地方更新引用。
例如,我有 DataSet1 并想将其重命名为 Abc。我是否必须检查所有使用旧名称的文本框和表达式并手动将它们重命名为新的数据集名称?或者有一个捷径可以让它们保持同步。
任何的想法?
谢谢。
sql-server ×7
ssis ×3
jobs ×2
ssrs-2008 ×2
index ×1
optimization ×1
security ×1
sql-clr ×1
sqlcmd ×1
ssrs ×1
t-sql ×1
view ×1
xp-cmdshell ×1