Invoke-SqlServerQuery использует неверный домен и имя пользователя - PullRequest
0 голосов
/ 11 сентября 2018

По какой-то причине Invoke-SqlServerQuery из модуля InvokeQuery использует неправильное имя пользователя для интегрированной безопасности. Пример:

PS C:\> whoami
desktop-7htqmm0\horizon-vm
PS C:\> $env:USERNAME
HORIZON-VM
PS C:\> [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
DESKTOP-7HTQMM0\HORIZON-VM
PS C:\> Invoke-SqlServerQuery -Sql "SELECT * FROM table1" -ConnectionString "server=DESKTOP-7HTQMM0\SQLEXPRESS;database=test1;integrated security=sspi;"
Invoke-SqlServerQuery : Cannot open database "test1" requested by the login. The login failed.
Login failed for user 'MicrosoftAccount\<redacted_email>@gmail.com'.
At line:1 char:1
+ Invoke-SqlServerQuery -Sql "SELECT * FROM table1" -ConnectionString " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Invoke-SqlServerQuery], SqlException
    + FullyQualifiedErrorId : System.Data.SqlClient.SqlException,InvokeQuery.InvokeSqlServerQuery

Однако модуль SqlPs работает нормально:

PS C:\> Invoke-Sqlcmd -ServerInstance DESKTOP-7HTQMM0\SQLEXPRESS -Database test -Query "SELECT * FROM table1"

pk                                   someint somestring     somedatetime
--                                   ------- ----------     ------------
7a836fe1-dda6-4496-8af8-065cf45e4922     213 hey hey hey    9/10/2018 9:09:50 PM
7cb4a34d-74be-4c4b-9ffe-35a076d1c018     321 yo yo yo       9/10/2018 9:09:50 PM
92bae90e-8101-428e-bea3-69c520f6c1d8     123 blah blah blah 9/10/2018 9:09:50 PM

Таблица создается с помощью этого запроса после создания базы данных (это из Gitub * InvokeQuery's ):

use [test]
GO
CREATE TABLE [dbo].[table1](
  [pk] [uniqueidentifier] NOT NULL,
  [someint] [bigint] NOT NULL,
  [somestring] [nvarchar](500) NOT NULL,
  [somedatetime] [datetime2](7) NOT NULL,
  CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([pk] ASC)
)
GO
--Seed data
insert into table1 values (NEWID(), 123, 'blah blah blah', GETDATE())
insert into table1 values (NEWID(), 321, 'yo yo yo', GETDATE())
insert into table1 values (NEWID(), 213, 'hey hey hey', GETDATE())

За исключением обходного пути для создания пользователя SQL для этой цели, я бы хотел, чтобы интегрированная система безопасности работала правильно. Как я могу заставить его использовать правильное имя для текущего пользователя?

1 Ответ

0 голосов
/ 11 сентября 2018

Хорошо ... почти уверен, что у меня была именно эта проблема раньше.Посмотрите на эту статью

Командлет 'invoke-sql' тупой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...