Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
9f7c3f3
Add controller and services for Luna.AI
allenwux Apr 30, 2020
19c02c8
fix some bugs
allenwux Apr 30, 2020
20dd5dc
fix some typo in the sql script
allenwux Apr 30, 2020
8e14c4c
fix the routing for aml workspaces
allenwux Apr 30, 2020
8846562
update the way to create and delete a apisubscription
allenwux May 1, 2020
4c6c687
add advanced settings to apiversion payload
allenwux May 4, 2020
00eaf6c
Luna_Data_v2
May 6, 2020
168fb7a
Luna_v2_APIM
May 7, 2020
5b9315e
Luna_v2
May 8, 2020
4e30cfb
Update appsettings.json
allenwux May 8, 2020
7b5ec4f
Merge branch 'luna.ai' of https://github.com/Azure/AIPlatform into lu…
allenwux May 8, 2020
c85a9b8
fix-1
May 9, 2020
e557c5e
Merge branch 'luna.ai' of https://github.com/Azure/AIPlatform into lu…
allenwux May 9, 2020
e908535
Merge branch 'luna.ai' of https://github.com/Azure/AIPlatform into lu…
allenwux May 9, 2020
16409b9
Merge branch 'luna.ai' of https://github.com/Azure/AIPlatform into lu…
allenwux May 10, 2020
ab8f5cc
Merge branch 'luna.ai' of https://github.com/Azure/AIPlatform into lu…
allenwux May 9, 2020
73af896
ready_fix
May 11, 2020
8a80c22
Update appsettings.json
allenwux May 11, 2020
adff217
Merge branch 'luna.ai' of https://github.com/Azure/AIPlatform into lu…
allenwux May 11, 2020
938d8bd
fix some bug and add amlworkspace support
allenwux May 11, 2020
755ec41
add baseurl to subscriptions
allenwux May 12, 2020
cf666ed
fix_delete_judgement
May 12, 2020
a74a585
Merge pull request #22 from Azure/junh/luna.ai
allenwux May 12, 2020
6f61cbf
add_shared_access_token_generate
May 13, 2020
090047d
fix some bugs and add few new APIs
allenwux May 13, 2020
82db95e
Merge branch 'master' into luna.ai
allenwux May 13, 2020
ef05053
fix the delete apisubscription issue
allenwux May 13, 2020
1e4ce16
update the config
allenwux May 13, 2020
b76a0ba
fix_bugs
May 15, 2020
458b5e3
add aadtenantid to the amlworkspace entity
allenwux May 19, 2020
60a3527
Merge pull request #24 from Azure/luna.ai.xiwu
allenwux May 19, 2020
e643f41
Merge pull request #23 from Azure/junh/luna.ai
pegasas May 19, 2020
0917a9e
luna_v2
May 20, 2020
a6bb7d0
luna_ai_stage_2
May 29, 2020
a1ff8f7
Merge pull request #26 from Azure/junh/luna.ai.stage2
pegasas Jun 5, 2020
482abd3
luna_v2_stage2
Jun 6, 2020
7200b76
Merge branch 'junh/luna.ai' of https://github.com/Azure/AIPlatform in…
allenwux Jun 8, 2020
da4b2c6
luna_v2_stage2
Jun 6, 2020
d7378f1
Merge branch 'junh/luna.ai' of https://github.com/Azure/AIPlatform in…
allenwux Jun 9, 2020
2f10eb0
luna_v2_stage2
Jun 6, 2020
ccdc87c
Merge pull request #25 from Azure/junh/luna.ai
allenwux Jun 12, 2020
a729c3b
change_format
Jun 12, 2020
702c840
Merge pull request #29 from Azure/junh/luna.ai
allenwux Jun 19, 2020
0ab6e65
Merge branch 'luna.ai' into junh/luna.ai
allenwux Jun 19, 2020
3d38ced
Merge branch 'junh/luna.ai' of https://github.com/Azure/AIPlatform in…
allenwux Jun 19, 2020
2e61f46
Merge pull request #29 from Azure/junh/luna.ai
allenwux Jun 19, 2020
7c0e021
fix_bugs
Jul 1, 2020
4f0cc44
Merge pull request #30 from Azure/junh/luna.ai
pegasas Jul 2, 2020
1719b2a
fix_response_format
Jul 3, 2020
968bf9e
Merge pull request #31 from Azure/junh/luna.ai
pegasas Jul 3, 2020
c87d6fa
fix_bug
Jul 7, 2020
fb4d146
Merge pull request #32 from Azure/junh/luna.ai
pegasas Jul 7, 2020
a69bbb5
fix
Jul 15, 2020
38e5147
Merge pull request #33 from Azure/junh/luna.ai
pegasas Jul 16, 2020
8d2c5f5
Add Luna.ai support to the deployment script
allenwux Jul 21, 2020
15603ec
Merge branch 'master' into luna.ai
allenwux Jul 21, 2020
d5bc3f4
Add the client libraries
allenwux Jul 21, 2020
055804d
Add documentation for Luna.AI
allenwux Jul 21, 2020
02cd117
fix a markdown format issue
allenwux Jul 21, 2020
be66662
Update the Luna.AI documents
allenwux Jul 22, 2020
a317c94
continue to add documents for luna.ai
allenwux Jul 23, 2020
2aa5fe9
Merge pull request #1 from Azure/luna.ai
t-yuhanYao Jul 27, 2020
ccb4e37
cert
t-yuhanYao Jul 27, 2020
b52fd0a
cert
t-yuhanYao Jul 27, 2020
4b86822
cert
t-yuhanYao Jul 27, 2020
243da02
Documentation update for Luna.AI
allenwux Jul 27, 2020
5ecffe6
enable client cert for API app
allenwux Jul 28, 2020
1a0a78a
fixed secret to keyvault & apiversion for RTP & delete deployment fro…
t-yuhanYao Jul 28, 2020
558dde5
update documentation
allenwux Jul 28, 2020
52fd6d3
fix image links
allenwux Jul 29, 2020
cb47bf6
update the documents
allenwux Jul 29, 2020
a6bb511
fix
t-yuhanYao Aug 3, 2020
a58cb14
Merge pull request #36 from t-yuhanYao/yyh/luna.ai
allenwux Aug 4, 2020
61ce36c
Fix some bugs and add support for publishing from git repo
allenwux Aug 4, 2020
a08da0c
fix the secret naming issue and update the build
allenwux Aug 4, 2020
c622fa9
fix some deployment issues
allenwux Aug 4, 2020
ed42b8e
update documents
allenwux Aug 4, 2020
31e1a6e
UI changes
allenwux Aug 5, 2020
201deb0
add header
t-yuhanYao Aug 7, 2020
19c5783
Merge pull request #40 from t-yuhanYao/header_/luna.ai
allenwux Aug 7, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file modified end-to-end-solutions/Luna/Resources/Builds/2.0/apiApp.zip
Binary file not shown.
Binary file modified end-to-end-solutions/Luna/Resources/Builds/2.0/isvApp.zip
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
## Copyright (c) Microsoft Corporation.
## Licensed under the MIT license.

param (
[Parameter(Mandatory=$true)]
[string]$tenantId = "default",

[Parameter(Mandatory=$true)]
[string]$subscriptionId = "default",

[Parameter(Mandatory=$true)]
[string]$userId = "default",

[Parameter(Mandatory=$true)]
[string]$location = "default"
)

$rpList = @('Microsoft.Network','Microsoft.Compute','Microsoft.ContainerInstance','Microsoft.ContainerService','Microsoft.Insights','Microsoft.Sql','Microsoft.MachineLearningServices','Microsoft.Storage','Microsoft.ApiManagement','Microsoft.KeyVault','Microsoft.Web','Microsoft.OperationalInsights')

Connect-AzAccount -Tenant $tenantId

Set-AzContext -Subscription $subscriptionId

Write-Host "Enabling required Resource Providers and check the region availability"

$rpList | ForEach-Object -Process {
$rp = Register-AzResourceProvider -ProviderNamespace $_;
If (-not $rp.Locations.Contains($location)){Write-Error "Resource Provider" $_ "is not enabled in region " $location}}

Write-Host "Check if you are owner or contributor of the Azure subscription"

$scope = "/subscriptions/"+$subscriptionId
$assignment = Get-AzRoleAssignment -Scope $scope | Where-Object {$_.Scope -eq $scope -and $_.SignInName -eq $userId -and ($_.RoleDefinitionName -eq "Owner" -or $_.RoleDefinitionName -eq "Contributor")}

If ($assignment.Length -le 0){
Write-Error "You are neither owner nor contributor of Azure subscription " $subscriptionId
}

64 changes: 61 additions & 3 deletions end-to-end-solutions/Luna/Resources/Deployment/Deploy.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
## Copyright (c) Microsoft Corporation.
## Licensed under the MIT license.

param (
[Parameter(Mandatory=$true)]
[string]$uniqueName = "default",
Expand Down Expand Up @@ -35,6 +38,16 @@

[string]$apiWebAppInsightsName = "default",

[string]$apimName = "default",

[string]$apimTier = "Developer",

[string]$apimCapacity = 1,

[string]$amlWorkspaceName = "default",

[string]$amlWorkspaceSku = "Basic",

[string]$azureMarketplaceAADApplicationName = "default",

[string]$azureMarketplaceAADApplicationId = "00000000-0000-0000-0000-000000000000",
Expand Down Expand Up @@ -130,7 +143,7 @@ function Create-AzureADApplication{
function GrantKeyVaultAccessToWebApp{
param($resourceGroupName, $keyVaultName, $webAppName)
$webapp = Get-AzWebApp -ResourceGroupName $resourceGroupname -Name $webAppName
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $webapp.Identity.PrincipalId -PermissionsToSecrets list,get
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $webapp.Identity.PrincipalId -PermissionsToSecrets list,get,set,delete
}

function Get-PublishingProfileCredentials($resourceGroupName, $webAppName){
Expand Down Expand Up @@ -240,6 +253,8 @@ $enduserWebAppName = GetNameForAzureResources -defaultName $enduserWebAppName -r
$apiWebAppName = GetNameForAzureResources -defaultName $apiWebAppName -resourceTypeSuffix "-apiapp" -uniqueName $uniqueName
$apiWebJobName = GetNameForAzureResources -defaultName $apiWebJobName -resourceTypeSuffix "-apiwebjob" -uniqueName $uniqueName
$apiWebAppInsightsName = GetNameForAzureResources -defaultName $apiWebAppInsightsName -resourceTypeSuffix "-apiappinsights" -uniqueName $uniqueName
$apimName = GetNameForAzureResources -defaultName $apimName -resourceTypeSuffix "-apim" -uniqueName $uniqueName
$amlWorkspaceName = GetNameForAzureResources -defaultName $amlWorkspaceName -resourceTypeSuffix "-aml" -uniqueName $uniqueName

$azureMarketplaceAADApplicationName = GetNameForAzureResources -defaultName $azureMarketplaceAADApplicationName -resourceTypeSuffix "-azuremarketplace-aad" -uniqueName $uniqueName
$azureResourceManagerAADApplicationName = GetNameForAzureResources -defaultName $azureResourceManagerAADApplicationName -resourceTypeSuffix "-azureresourcemanager-aad" -uniqueName $uniqueName
Expand Down Expand Up @@ -271,7 +286,7 @@ if ($userApplicationSubscriptionId -eq "default"){
$userApplicationSubscriptionId = $currentContext.Subscription.Id
}

$currentUser = Get-AzADUser -Mail $accountId
$currentUser = Get-AzADUser -UserPrincipalName $accountId


if ($adminAccounts -eq "default"){
Expand All @@ -284,6 +299,8 @@ Write-Host "Create resource group" $resourceGroupName
New-AzResourceGroup -Name $resourceGroupName -Location $location

Write-Host "Deploy ARM template in resource group" $resourceGroupName
$deployAPIM = $enableV2 -eq 'true'
$deployAML = $enableV2 -eq 'true'
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-TemplateFile .\main.json `
-keyVaultName $keyVaultName `
Expand All @@ -300,7 +317,16 @@ New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName `
-sqlAdministratorUsername $sqlServerAdminUsername `
-tenantId $tenantId `
-objectId $objectId `
-buildLocation $buildLocation
-buildLocation $buildLocation `
-apimAdminEmail $accountId `
-orgName $companyName `
-apimName $apimName `
-apimTier $apimTier `
-apimCapacity $apimCapacity `
-deployAPIM $deployAPIM `
-workspaceName $amlWorkspaceName `
-workspaceSku $amlWorkspaceSku `
-deployAML $deployAML


$filter = "AppId eq '"+$webAppAADApplicationId+"'"
Expand Down Expand Up @@ -375,6 +401,10 @@ if ($isNewApp){
Write-Host "Assign subscription contribution role to the service principal."
$scope = '/subscriptions/'+$userApplicationSubscriptionId
NewAzureRoleAssignment -objectId $principalId -scope $scope -retryCount 10

Write-Host "Assign contribution role on the AML workspace to the service principal."
$scope = '/subscriptions/'+$userApplicationSubscriptionId+'/resourceGroups/'+$resourceGroupName+'/providers/Microsoft.MachineLearningServices/workspaces/'+$amlWorkspaceName
NewAzureRoleAssignment -objectId $principalId -scope $scope -retryCount 10
}

#grant key vault access to API app
Expand Down Expand Up @@ -421,6 +451,25 @@ $connectionString = "Server=tcp:" + $sqlServerInstanceName + ",1433;Initial Cata
$secretvalue = ConvertTo-SecureString $connectionString -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $keyVaultName -Name 'connection-string' -SecretValue $secretvalue

$apimTenantAccessId = 'integration'
$controllerBaseUrl = ''

if ($enableV2 -eq 'true'){
Write-Host "Get APIM management key"
$apimContext = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $apimName
Set-AzApiManagementTenantAccess -Context $apimContext -Enabled $True

$tenantAccess = Get-AzApiManagementTenantAccess -Context $apimContext
$tenantAccessSecret = Get-AzApiManagementTenantAccessSecret -Context $apimContext
$apimPrimaryKey = $tenantAccessSecret.PrimaryKey
$secretvalue = ConvertTo-SecureString $apimPrimaryKey -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $keyVaultName -Name 'apim-key' -SecretValue $secretvalue

$apimTenantAccessId = $tenantAccess.Id
$controllerBaseUrl = "https://"+ $apiWebAppName +".azurewebsites.net"
}


Write-Host "Update app settings"
$appsettings = @{}
$appsettings["SecuredCredentials:VaultName"] = $keyVaultName;
Expand All @@ -438,6 +487,15 @@ $appsettings["AzureAD:TenantId"] = $tenantId;
$appsettings["ISVPortal:AdminAccounts"] = $adminAccounts;
$appsettings["ISVPortal:AdminTenant"] = $adminTenantId;

$appsettings["SecuredCredentials:APIM:Config:VaultName"] = $keyVaultName;
$appsettings["SecuredCredentials:APIM:Config:SubscriptionId"] = $lunaServiceSubscriptionId;
$appsettings["SecuredCredentials:APIM:Config:ResourceGroupName"] = $resourceGroupName;
$appsettings["SecuredCredentials:APIM:Config:APIMServiceName"] = $apimName;
$appsettings["SecuredCredentials:APIM:Config:APIVersion"] = '2019-12-01';
$appsettings["SecuredCredentials:APIM:Config:UId"] = $apimTenantAccessId;
$appsettings["SecuredCredentials:APIM:Config:Key"] = 'apim-key';
$appsettings["SecuredCredentials:APIM:Config:ControllerBaseUrl"] = $controllerBaseUrl;

$appInsightsApp = Get-AzApplicationInsights -ResourceGroupName $resourceGroupName -name $apiWebAppInsightsName
$appsettings["ApplicationInsights:InstrumentationKey"] = $appInsightsApp.InstrumentationKey;
$appsettings["WebJob:APIServiceUrl"] = "https://" + $apiWebAppName + ".azurewebsites.net/api";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
-- Copyright (c) Microsoft Corporation.
-- Licensed under the MIT license.

SET ANSI_NULLS ON
GO

Expand Down Expand Up @@ -47,9 +50,9 @@ DROP TABLE [dbo].[AadSecretTmps]
END
GO

IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'SubscriptionCustomMeterUsage' AND sch.name = 'dbo')
IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'SubscriptionCustomMeterUsages' AND sch.name = 'dbo')
BEGIN
DROP TABLE [dbo].[SubscriptionCustomMeterUsage]
DROP TABLE [dbo].[SubscriptionCustomMeterUsages]
END
GO

Expand Down Expand Up @@ -149,6 +152,36 @@ DROP TABLE [dbo].[Offers]
END
GO

IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'APISubscriptions' AND sch.name = 'dbo')
BEGIN
DROP TABLE [dbo].[APISubscriptions]
END
GO

IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'APIVersions' AND sch.name = 'dbo')
BEGIN
DROP TABLE [dbo].[APIVersions]
END
GO


IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'Deployments' AND sch.name = 'dbo')
BEGIN
DROP TABLE [dbo].[Deployments]
END
GO

IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'Products' AND sch.name = 'dbo')
BEGIN
DROP TABLE [dbo].[Products]
END
GO

IF EXISTS (select * from sys.tables tb join sys.schemas sch on tb.schema_id = sch.schema_id where tb.name = 'AMLWorkspaces' AND sch.name = 'dbo')
BEGIN
DROP TABLE [dbo].[AMLWorkspaces]
END
GO

CREATE TABLE [dbo].[Offers](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
Expand Down Expand Up @@ -458,8 +491,106 @@ CREATE TABLE [dbo].[WebhookWebhookParameters](
CONSTRAINT FK_WebhookParameterId_WebhookWebhookParameters FOREIGN KEY (WebhookParameterId) REFERENCES WebhookParameters(Id)
)

CREATE TABLE [dbo].[AMLWorkspaces](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[WorkspaceName] [nvarchar](50) NOT NULL,
[Region] [nvarchar](64) NOT NULL,
[ResourceId] [nvarchar](max) NOT NULL,
[AADApplicationId] [uniqueidentifier] NOT NULL,
[AADTenantId] [uniqueidentifier] NULL, -- allow null for backward compatibility
[AADApplicationSecrets] [nvarchar](128) NOT NULL,
PRIMARY KEY (Id)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Products](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[ProductName] [nvarchar](50) NOT NULL,
[ProductType] [nvarchar](64) NOT NULL,
[HostType] [nvarchar](64) NOT NULL,
[Owner] [nvarchar](512) NOT NULL,
[CreatedTime] [datetime2](7) NOT NULL,
[LastUpdatedTime] [datetime2](7) NOT NULL,
PRIMARY KEY (Id)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Deployments](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[ProductId] [bigint] NOT NULL,
[DeploymentName] [nvarchar](50) NOT NULL,
[Description] [nvarchar](1024) NOT NULL,
[CreatedTime] [datetime2](7) NOT NULL,
[LastUpdatedTime] [datetime2](7) NOT NULL,
PRIMARY KEY (Id),
CONSTRAINT FK_productId_Deployments FOREIGN KEY (ProductId) REFERENCES Products(Id)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APIVersions](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[DeploymentId] [bigint] NOT NULL,
[VersionName] [nvarchar](50) NOT NULL,
[RealTimePredictAPI] [nvarchar](max) NULL,
[TrainModelAPI] [nvarchar](max) NULL,
[BatchInferenceAPI] [nvarchar](max) NULL,
[DeployModelAPI] [nvarchar](max) NULL,
[AuthenticationType] [nvarchar](8) NOT NULL,
[AuthenticationKey] [nvarchar](64) NULL,
[AMLWorkspaceId] [bigint] NULL,
[AdvancedSettings] [nvarchar](max) NULL,
[CreatedTime] [datetime2](7) NOT NULL,
[LastUpdatedTime] [datetime2](7) NOT NULL,
PRIMARY KEY (Id),
CONSTRAINT FK_deploymentId_APIVersions FOREIGN KEY (DeploymentId) REFERENCES Deployments(Id),
-- CONSTRAINT FK_amlworkspaceId_APIVersions FOREIGN KEY (AMLWorkspaceId) REFERENCES AMLWorkspaces(Id)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APISubscriptions](
[SubscriptionId] [uniqueidentifier] NOT NULL,
[DeploymentId] [bigint] NOT NULL,
[SubscriptionName] [nvarchar](64) NOT NULL,
[userId] [nvarchar](512) NOT NULL,
[Status] [nvarchar](32) NULL,
[BaseUrl] [nvarchar](max) NULL,
[PrimaryKey] [nvarchar](64) NULL,
[SecondaryKey] [nvarchar](64) NULL,
[CreatedTime] [datetime2](7) NOT NULL,
[LastUpdatedTime] [datetime2](7) NOT NULL,
PRIMARY KEY (SubscriptionId),
CONSTRAINT FK_deploymentId_APISubscriptions FOREIGN KEY (DeploymentId) REFERENCES Deployments(Id)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[APISubscriptions_tmp](
[Id] [bigint] identity(1,1) NOT NULL,
[SubscriptionId] [uniqueidentifier] NOT NULL,
[DeploymentId] [bigint] NOT NULL,
[SubscriptionName] [nvarchar](64) NOT NULL,
[userId] [nvarchar](512) NOT NULL,
[Status] [nvarchar](32) NULL,
[BaseUrl] [nvarchar](max) NULL,
[PrimaryKey] [nvarchar](64) NULL,
[SecondaryKey] [nvarchar](64) NULL,
[CreatedTime] [datetime2](7) NOT NULL,
[LastUpdatedTime] [datetime2](7) NOT NULL,
PRIMARY KEY CLUSTERED([SubscriptionId] ASC)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

insert into APISubscriptions_tmp select * from APISubscriptions
GO

drop table apisubscriptions
GO

EXEC sp_rename 'apisubscriptions_tmp', 'APISubscriptions'
GO

ALTER TABLE [dbo].[APISubscriptions] WITH CHECK ADD CONSTRAINT [FK_deploymentId_APISubscriptions] FOREIGN KEY([DeploymentId])
REFERENCES [dbo].[Deployments] ([Id])
GO

ALTER TABLE [dbo].[APISubscriptions] CHECK CONSTRAINT [FK_deploymentId_APISubscriptions]
GO
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
-- Copyright (c) Microsoft Corporation.
-- Licensed under the MIT license.

SET ANSI_NULLS ON
GO

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
-- Copyright (c) Microsoft Corporation.
-- Licensed under the MIT license.

SET ANSI_NULLS ON
GO

Expand Down
Loading