在 Operations Manager 事件日志中,记录多个事件,其中包含以下错误消息:
“) ”附近的语法不正确
数据仓库管理服务器上的示例 Operations Manager 事件日志事件
资料来源:DataAccessLayer
事件 ID:33333
级别:警告
说明:SqlError 上的数据访问层拒绝重试:
请求:Ral_ExecuteSql -- (语句=exec ('IF OBJECT_ID ('[dbo]。[IncidentDim]'') IS NULL
BEGIN
CREATE TABLE [dbo].[IncidentDim]
([列名] NVARCH...) , (RETURN_VALUE=102)
数字:102
消息:“) ”附近的语法不正确。
事件 ID:33403
级别:警告
部署执行基础结构在执行部署程序时遇到错误。
MP 元素 ID: <MP 元素 ID>
MP 名称: <MP 名称>
MP 版本:1.0.0.1
操作:安装
错误消息:System.Data.SqlClient.SqlException:在“) ”附近语法不正确。
“) ”附近的语法不正确。
at System.Data.SqlClient.SqlConnection.OnError (SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
来源:Data Warehouse
事件 ID:33580
级别:错误
作业失败。 JobName = <
作业名称
>;JobCategory = 执行;BatchId = <
Batch ID
>;WorkitemId = <
Workitem ID
>;ModuleName = <
模块名称
>;ErrorDetails = <Error>Error EventTime=“<
Time
>”>Logged:<
Time
> - “) ”附近的语法不正确。
“) ”附近的语法不正确。</Error></Errors>;
来源:Data Warehouse
事件 ID:33503
级别:警告
尝试执行 ETL 模块时出现错误:
ETL 进程类型:转换
批处理 ID: <Batch ID>
模块名称:TransformIncidentDim
消息:列名“列名>”<无效。
EXECUTE 之后的事务计数表示 BEGIN 语句和 COMMIT 语句数不匹配。 上一个计数 = 0,当前计数 = 1。
Stack: at System.Data.SqlClient.SqlConnection.OnError (SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
来源:Data Warehouse
事件 ID:33502
级别:错误
ETL 模块执行失败:
ETL 进程类型:转换
批处理 ID: <Batch ID>
模块名称:TransformIncidentDim
消息:列名“列名>”<无效。
EXECUTE 之后的事务计数表示 BEGIN 语句和 COMMIT 语句数不匹配。 上一个计数 = 0,当前计数 = 1。
Stack: at System.Data.SqlClient.SqlConnection.OnError (SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
资料来源:DataAccessLayer
事件 ID:33333
级别:警告
SqlError 上的数据访问层拒绝重试:
请求:Ral_ExecuteSql -- (语句=exec ('IF OBJECT_ID ('[dbo]。[IncidentDim]'') IS NULL
BEGIN
CREATE TABLE [dbo].[IncidentDim]
([列名] NVARCH...) , (RETURN_VALUE=102)
数字:102
消息:“) ”附近的语法不正确。
来源:Data Warehouse
事件 ID:33504
级别:信息
ETL 模块执行从故障中恢复:
ETL 进程类型:转换
批处理 ID: <Batch ID>
模块名称:TransformIncidentDim
事件 ID:33410
级别:错误
部署执行基础结构已重试最大次数,并在此执行步骤中放弃。
MP 元素 ID: <MP 元素 ID>
MP 名称: <MP 名称>
MP 版本:1.0.0.1
操作:安装
错误消息:“) ”附近的语法不正确。
“) ”附近的语法不正确。
出现此问题的原因是Service Manager类(例如
Incident
类)已使用默认值为空格或多个空格(而不是
NULL
)的新字段进行扩展。
在开始之前,对
DWStagingAndConfig
数据库运行
ServiceManager
以下 SQL 查询:
use DWStagingAndConfig -- or Use ServiceManager
select managedtypepropertyname, DefaultValue from ManagedTypeProperty where managedtypepropertyname like '%' and defaultvalue = ''
order by ManagedTypePropertyName
如果查询未返回任何结果,则以下分辨率不适用于你的系统。 否则,请执行以下步骤。
步骤 1:修复管理包中的问题
使用以下查询查找字段和管理包名称:
Select MP.MPName, MTP.ManagedTypePropertyName, MTP.DefaultValue from managementPack as MP
Join ManagedTypeProperty as MTP on MTP.ManagementPackId = MP.ManagementPackId
Where MTP.defaultvalue = ''
在Service Manager控制台中,选择“管理”。
在 “管理 ”窗格中,展开 “管理”,然后选择 “管理包”。
在 “管理包 ”窗格中,选择由 SQL 查询标识的管理包。
在 “任务 ”窗格中,选择管理包名称下的“ 导 出”。
在“ 浏览文件夹 ”对话框中,选择文件的位置,然后单击 “确定”。
使用记事本打开 XML 格式的管理包文件,找到与 SQL 查询返回的值匹配的 属性 ID= ,然后从属性中删除 DefaultValue=“ 部分。
在 XML 文件中查找 ManagementPackPublicKeyToken> 文本并删除整行。<
在Service Manager创作工具中打开管理包,然后使用以前用于封装包的同一 .snk 密钥文件密封Service Manager管理包。
在Service Manager控制台中,导入管理包。
在Service Manager控制台中,选择Data Warehouse,展开Data Warehouse,然后选择Data Warehouse作业。
在“Data Warehouse作业”窗格中,右键单击 MPSyncJob,然后从“任务”列表中选择“恢复”。
定期刷新Data Warehouse作业窗格,直到 MPSyncJob 完成。
步骤 2:修复数据仓库中的问题
方法 1:还原数据仓库数据库
将以下数据库还原到更改前的日期:
DWStagingAndConfig
DWRepository
DWDataMart
OMDWDataMart
CMDWDataMart
请确保备份在 数据保留设置中指定的期限内。 若要检查数据保留设置:在Service Manager控制台中,选择“管理”,然后转到“管理>设置”。
还原数据仓库数据库后,数据仓库将使用更新后的管理包和存储在Service Manager上的数据。
方法 2:修改 DWStagingAndConfig 数据库
如果管理包不是由你创建的,则可能需要使用此方法使用新数据库重新生成数据仓库。 因此,建议在继续之前与 Microsoft 支持部门联系。
运行以下查询:
Use DWStagingAndConfig
Select * from DeploySequenceStaging
Select DeployItemName, DeploySequenceId, Outcome, StatusID from DeployItemStaging where StatusId =2 and outcome like '%Incorrect syntax near '')''.%'
-- Click the Sequence field and view the first line. Confirm that the management pack is one that you created before proceeding
DECLARE @DeploySequenceID [uniqueidentifier]
SET @DeploySequenceID = (Select DeploySequenceID from DWStagingAndConfig.dbo.DeployItemStaging WHERE outcome like '%Incorrect syntax near '')''.%')
Select @DeploySequenceID
DELETE FROM DWStagingAndConfig.dbo.DeploySequenceStaging WHERE DeploySequenceId=@DeploySequenceID
DELETE FROM DWStagingAndConfig.dbo.DeployItemStaging WHERE DeploySequenceId=@DeploySequenceID
DECLARE @BatchID Int
SET @BatchID = (Select Batchid from infra.workitem where STatusID=2 and ( Charindex('Incorrect syntax near '')''.',CAST([ErrorSummary] AS VARCHAR(MAX)))>0 ) )
Update infra.workitem SET statusid = 6 WHERE BatchId = @BatchID
不建议为管理包中定义的字段设置默认值。 如果必须设置默认值,请确保它不是空白或多个空格。