SQL 服务器 table 在 PowerShell SMO 与 SSMS 中的大小写不同
SQL Server table with different case in PowerShell SMO vs SSMS
我很困惑,不知道从哪里开始寻找。我有一个以不同大小写 sys.object 和 SSMS GUI 出现的表名,而不是通过 SMO
检索它
例如在 SSMS 中我看到 "TABLENAME" 但在 Smo 中我看到 "TableName." 这导致 IBM 应用程序出现问题,我正在努力弄清楚为什么会这样。
$table = $SmoServer.Databases.Item("MyDb").Tables.Item("TABLENAME","dbo")
Write-Output $table
给出的输出是"TableName."
运行 sql 查询虽然:
select [name] from sys.objects where name = 'TABLENAME'
给出的输出是"TABLENAME."
这无关紧要,但排序规则不区分大小写。
有没有人有什么想法?
谢谢。
这似乎是使用 Item 方法从 SMO 表对象检索 table 的一个怪癖。第一次检索 table 时,它似乎 return 带有方法参数中提供的大小写的 table。如果我 运行 Item 方法再次使用不同的大小写,它仍然会在第一次调用时输出大小写。
例如:
第 1 运行:
$SmoServer.Databases.Item("MyDb").Tables.Item("TableName","dbo")
将输出 "TableName" 如上面参数中提供的那样,即使 table 实际上是 "TABLENAME."
第二个运行:
$SmoServer.Databases.Item("MyDb").Tables.Item("TableNAME","dbo")
即使我改变了外壳,仍然会输出 "TableName"。如果我重新创建 smoServer 对象,它只会输出 "TableNAME" 的新外壳。
有趣的行为。我想我会改用 Where-Object。
我很困惑,不知道从哪里开始寻找。我有一个以不同大小写 sys.object 和 SSMS GUI 出现的表名,而不是通过 SMO
检索它例如在 SSMS 中我看到 "TABLENAME" 但在 Smo 中我看到 "TableName." 这导致 IBM 应用程序出现问题,我正在努力弄清楚为什么会这样。
$table = $SmoServer.Databases.Item("MyDb").Tables.Item("TABLENAME","dbo")
Write-Output $table
给出的输出是"TableName."
运行 sql 查询虽然:
select [name] from sys.objects where name = 'TABLENAME'
给出的输出是"TABLENAME."
这无关紧要,但排序规则不区分大小写。
有没有人有什么想法?
谢谢。
这似乎是使用 Item 方法从 SMO 表对象检索 table 的一个怪癖。第一次检索 table 时,它似乎 return 带有方法参数中提供的大小写的 table。如果我 运行 Item 方法再次使用不同的大小写,它仍然会在第一次调用时输出大小写。
例如:
第 1 运行:
$SmoServer.Databases.Item("MyDb").Tables.Item("TableName","dbo")
将输出 "TableName" 如上面参数中提供的那样,即使 table 实际上是 "TABLENAME."
第二个运行:
$SmoServer.Databases.Item("MyDb").Tables.Item("TableNAME","dbo")
即使我改变了外壳,仍然会输出 "TableName"。如果我重新创建 smoServer 对象,它只会输出 "TableNAME" 的新外壳。
有趣的行为。我想我会改用 Where-Object。