Таблица SQL Server с другим регистром в PowerShell SMO против SSMS - PullRequest
0 голосов
/ 10 декабря 2018

Я совсем запутался и не уверен, с чего начать.У меня есть имя таблицы, которое появляется в другом случае sys.object и в графическом интерфейсе SSMS, в отличие от извлечения его через 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».

Не то, чтобы это имело значение, но сортировка не учитывает регистр.

У кого-нибудь есть мысли?

Спасибо.

1 Ответ

0 голосов
/ 11 декабря 2018

Кажется, это извращение использования метода Item для извлечения таблицы из объекта SMO Tables.При первом извлечении таблицы кажется, что она возвращает таблицу с регистром, указанным в аргументе метода.Если я снова запускаю метод Item с другим регистром, он по-прежнему выводит регистр при первом вызове.

например:

1-й запуск:

$SmoServer.Databases.Item("MyDb").Tables.Item("TableName","dbo")

Выводит «TableName», как было указано в вышеприведенном параметре, даже если таблица на самом деле «TABLENAME».

2-й запуск:

$SmoServer.Databases.Item("MyDb").Tables.Item("TableNAME","dbo")

Будетпо-прежнему выводить "TableName", хотя я изменил корпус.Новый регистр «TableNAME» будет выводиться только в том случае, если я воссоздаю объект smoServer.

Интересное поведение.Я думаю, что вместо этого я буду использовать Where-Object.

...