Предыстория моего вопроса
В любой момент я ожидаю, что люди из службы безопасности в черных костюмах и черных солнцезащитных очках придут и заберут меня из-за всех моих попыток входа на сервер sql...
Я использовал и адаптировал пример iris classon для подключения к базе данных через PowerShell. В адаптированном коде используется Integrated Security=True"
$dataSource = my_enterprise_db_server
$database = my_db
$connectionString = "Server=$dataSource;Database=$database;Integrated Security=True;"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$table = new-object “System.Data.DataTable”
$query = "..."
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
...
Хот-дог, который сработал. Спасибо Ирис.
Я прочитал способ snapin Import-Module sqlps для выполнения команды sql. Я также прочитал все ссылки, которые Майкл Соренс указал в своем ответе. Я могу смонтировать sqlserver, подключиться к mount mydb SQLSERVER SQLSERVER:\SQL
, использовать ls или dir, пройти путь по объектам и т. д. Я также пересмотрел основную часть того, что Iris предоставила для
$table = Invoke-Sqlcmd –Server $dataSource –Database $database -Query $query
Эта версия Invoke-Sqlcmd позволяет мне подключаться к корпоративной базе данных. Проблема со всеми предоставленными ссылками заключается в том, что они предполагают, что вы будете работать с базой данных sqlexpress на локальном хосте. В тот момент, когда я пытаюсь использовать
Set-Location SQLSERVER:\SQL\my_enterprise_db_server\my_db
или подобные конструкции, я получаю сообщение, которое заканчивается на
... ПРЕДУПРЕЖДЕНИЕ. Не удалось получить информацию о службе SQL Server. Попытка подключиться к WMI на my_enterprise_db_server не удалась со следующей ошибкой: Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
Я также видел упоминание о переменных окружения SQLCMDSERVER и SQLCMDDBNAME. Я установил их на
$env:SQLCMDDBNAME = "my_db"
$env:SQLCMDSERVER = "my_enterprise_db_server"
set-location sqlserver:\sql
ls
производит
MachineName
-----------
localhost
Вопрос
Как правильно использовать set-location или New-PSDrive-Name для базы данных, которая не находится на моем локальном компьютере?