Я изучаю SQL, хотя знаком с Powershell.
Я пытаюсь вызвать хранимую процедуру, используя параметр с табличным значением, чтобы вставить массив данных из PowerShell во временную таблицу базы данных SQL.
Я использую модуль SqlServer PowerShell: https://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module?view=sql-server-ver15
БД называется WAGS, таблица называется AzureADUsers, а мой определяемый пользователем тип называется AzureADUser.
Кажется, команда выполнена успешно, хотя я не вижу данных в таблице, я не уверен, что делаю неправильно, или это правильный подход.
Мой определяемый пользователем тип выглядит следующим образом (как и столбцы в моей таблице AzureADUser).
01: ImmutableId varchar 255 UNIQUE
02: DisplayName varchar 255
03: UserPrincipalName varchar 255 UNIQUE
04: ObjectId uniqueidentifier 16 UNIQUE
Моя хранимая процедура выглядит так (я включил весь сценарий ALTER на случай, если я допустил здесь ошибку).
USE [WAGS]
GO
/****** Object: StoredProcedure [dbo].[spUpdateAzureADUsersTable] Script Date: 20/10/2020 15:59:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spUpdateAzureADUsersTable] (@users [dbo].[AzureADUser] READONLY)
AS
INSERT INTO [dbo].[AzureADUsers]
(
ImmutableId,
DisplayName,
UserPrincipalName,
ObjectId
)
SELECT * FROM @users
Я пытаюсь вызвать хранимую процедуру с помощью командлета PowerShell Invoke-SqlCmd следующим образом:
$azureAdUsers = Get-AzureADUser -All $true | ? { $_.ImmutableId }
$data = $azureAdUsers | Select ImmutableId,DisplayName,UserPrincipalName,ObjectId
Invoke-Sqlcmd -ServerInstance 'MERCURY\SQLEXPRESS' -Database 'WAGS' -QUERY "EXEC spUpdateAzureADUsersTable $data"