我想从 SQL Server 2016 中存储为 nvarchar 值的任意格式良好的 JSON 文档中提取节点名称及其路径的完整列表。有没有可靠的方法来做到这一点?
例如,对于 json 值:
DECLARE @json_doc nvarchar(4000) = '{"Name1":"Value1", "Name2":"Value2"}'
在查询 @json_doc 时得到这个结果:
NODE_NAME
$.Name1
$.Name2
我想从 SQL Server 2016 中存储为 nvarchar 值的任意格式良好的 JSON 文档中提取节点名称及其路径的完整列表。有没有可靠的方法来做到这一点?
例如,对于 json 值:
DECLARE @json_doc nvarchar(4000) = '{"Name1":"Value1", "Name2":"Value2"}'
在查询 @json_doc 时得到这个结果:
NODE_NAME
$.Name1
$.Name2
我们已经部署了一个 SSIS 2012 项目和两个 ADO.Net 项目连接管理器。(项目中有五个包。)
该项目有一个相关的环境,带有一个包含服务器名称的变量。我想将变量映射到项目连接管理器的 ServerName 属性。
当我在 SSMS 2012 中右键单击 SSIS 项目节点,启动配置对话框时,我可以找到连接管理器,并突出显示它以查看其属性,但 ServerName 在属性列表中不可见。
通常,ServerName 属性列在 RetainSameConnection 属性下。它在同一项目中的其他项目连接管理器上可见。
为什么只为一个连接管理器隐藏此属性?
我们最近在 Windows Server 2012(从 Windows Server 2008 R2)上升级到 SQL Server 2012(从 SQL Server 2008 R2),以前运行没有错误的 SQL Server 作业代理作业现在失败了。
该作业有一个 Powershell 作业步骤:
$ErrorActionPreference = 'Stop'
$DateStamp = Get-Date -format "yyyyMMdd"
$BizUnit = 'SHB'
# Target File directory
$BaseDir = '\\MyFileServer\MyDirectory'
$Query = "EXEC dbo.usp_MyQuery '$BizUnit'"
$TargetFile = "MyTargetFile_" + $BizUnit + "_$DateStamp.xml"
$TargetDir = (Join-Path -Path $BaseDir -ChildPath $BizUnit)
$Query | Out-File -FilePath (Join-Path -Path $TargetDir -ChildPath $TargetFile) -Force -Encoding "utf8"
当作业运行时,它会失败并显示以下错误消息:
作业步骤在 PowerShell 脚本的第 14 行收到错误。对应的行是'$Query | Out-File -FilePath (Join-Path -Path $TargetDir -ChildPath $TargetFile) -Force -Encoding "utf8"'。更正脚本并重新安排作业。PowerShell返回的错误信息是:'Cannot perform operation because operation "ReportWrongProviderType" is invalid。删除操作“ReportWrongProviderType”,或调查其无效的原因。
当我搜索 interwebz 时,我找不到任何对“ReportWrongProviderType”的引用。关于 Out-File 调用有什么问题的任何想法?
我已经配置了一个带有执行 SQL 任务的 Microsoft SQL Server 2008 R2 SSIS 包,以在 Oracle 10.2 数据库上运行 PL/SQL 查询。
执行 SQL 任务(名为“SQL 更新 MY_STATUS 标志”)正在使用带有“OLE DB 的本机 OLE DB\Oracle 提供程序”提供程序的 OLE DB 连接管理器。所有其他任务设置都是默认值。
查询很简单:
UPDATE MY_TABLE
SET MY_STATUS = 1
WHERE MY_STATUS = 0
(注意:此查询在 SQL Developer 中使用分号终止符运行时成功。这里省略了终止符,因为如果包含分号,SSIS 会生成无效字符错误。)
当我开始调试时,任务开始执行然后无限期挂起,包没有完成执行。
调试输出窗口显示此消息:
警告:SQL 更新 MY_STATUS 标志处的 0x0:多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。没有做任何工作。
(任务的行为与配置为直接输入或变量的查询相同。)
在这种情况下,这个“多步骤”警告是什么意思?我必须做什么才能让执行 SQL 任务成功?