【发布时间】:2009-12-22 21:14:05
【问题描述】:
我想使用 SMO 生成一组插入语句来在环境之间复制数据。我有这个工作,但由于某种原因,日期时间字段被格式化为转换为日期时间的十六进制值。这使得脚本难以阅读并且无法更新。有没有办法让我改变它以使用日期的字符串表示?
用于生成的代码:
scripter = New Scripter(<server>)
scripter.Options.ScriptData = True
...
For Each s As String In scripter.EnumScript(list)
writer.WriteLine(FormatScript(s))
Next
我想改变这个...
INSERT [dbo].[dmMessages] ([MessageId], [MessageCd], [MessageDesc], [Status], [EnteredBy], [EnteredDt])
VALUES (1, N'GenericMessages.FieldRequired', N'The {0} field is required.', 1, N'System', CAST(0x00009B4900000000 AS DateTime))
到
INSERT [dbo].[dmMessages] ([MessageId], [MessageCd], [MessageDesc], [Status], [EnteredBy], [EnteredDt])
VALUES (1, N'GenericMessages.FieldRequired', N'The {0} field is required.', 1, N'System', '2009-1-1 13:00:00:000')
【问题讨论】:
-
您找到问题的答案了吗?事实上,我遇到了一个案例,SMO 会将 DateTime 字段编写为字符串(如
CAST(N'2014-07-22 15:24:32.873' AS DateTime)),我需要它是二进制的.. -
@Andreas:我没有答案。如果您可以提供您在 SMO 对象上的设置来获得您的输出,那就太好了。我默认得到二进制输出。您使用的是什么版本的 SMO?我的 Microsoft.SqlServer.Smo.dll 版本是 10.0.2531.0。
-
问题是,我没有系统地得到字符串输出。只有十分之一的用户得到了这个字符串输出(都使用我的工具的相同版本);确实很奇怪。备案:我的 Smo.dll 版本是 11.0.2100.60。我使用带有选项
ScriptData=True、ScriptSchema=False、ToFileOnly=True、FileName="..."和Encoding=New Text.UTF8Encoding(True)的脚本对象。
标签: sql-server smo