Skip to content

Commit 33ee9b8

Browse files
authored
Fixing script as create for vector tables. (#2487)
1 parent 9ad07ed commit 33ee9b8

File tree

2 files changed

+52
-7
lines changed

2 files changed

+52
-7
lines changed

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"sarif-viewer.connectToGithubCodeScanning": "off",
33
"csharp.debug.sourceFileMap": {
4-
"/_/src/Microsoft.SqlTools.ServiceLayer": "${workspaceFolder}/src/Microsoft.SqlTools.ServiceLayer"
4+
"/_/src/Microsoft.SqlTools.ServiceLayer": "${workspaceFolder}/src/Microsoft.SqlTools.ServiceLayer",
5+
"/_/src/Microsoft.SqlTools.SqlCore": "${workspaceFolder}/src/Microsoft.SqlTools.SqlCore",
56
}
67
}

src/Microsoft.SqlTools.SqlCore/Scripting/ScriptAsScriptingOperation.cs

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public override void Execute()
106106

107107
// Scripting data is not avaialable in the scripter
108108
options.ScriptData = false;
109-
SetScriptingOptions(options);
109+
SetScriptingOptions(server, options);
110110

111111
switch (this.Parameters.Operation)
112112
{
@@ -578,7 +578,39 @@ private static Dictionary<string, SqlServerVersion> LoadScriptCompatibilityMap()
578578

579579
}
580580

581-
private void SetScriptingOptions(ScriptingOptions scriptingOptions)
581+
private static SqlServerVersion GetCompatibilityOptionFromVersion(Version version)
582+
{
583+
switch(version.Major)
584+
{
585+
case 8:
586+
return SqlServerVersion.Version80;
587+
case 9:
588+
return SqlServerVersion.Version90;
589+
case 10:
590+
if (version.Minor == 50)
591+
{
592+
return SqlServerVersion.Version105;
593+
}
594+
return SqlServerVersion.Version100;
595+
case 11:
596+
return SqlServerVersion.Version110;
597+
case 12:
598+
return SqlServerVersion.Version120;
599+
case 13:
600+
return SqlServerVersion.Version130;
601+
case 14:
602+
return SqlServerVersion.Version140;
603+
case 15:
604+
return SqlServerVersion.Version150;
605+
case 16:
606+
return SqlServerVersion.Version160;
607+
case 17:
608+
default: //Please update the default value to latest version when a new version is released.
609+
return SqlServerVersion.Version170;
610+
}
611+
}
612+
613+
private void SetScriptingOptions(Server server, ScriptingOptions scriptingOptions)
582614
{
583615
scriptingOptions.AllowSystemObjects = true;
584616

@@ -588,21 +620,29 @@ private void SetScriptingOptions(ScriptingOptions scriptingOptions)
588620
//We always want role memberships for users and database roles to be scripted
589621
scriptingOptions.IncludeDatabaseRoleMemberships = true;
590622
SqlServerVersion targetServerVersion;
591-
if(scriptCompatibilityMap.TryGetValue(this.Parameters.ScriptOptions.ScriptCompatibilityOption, out targetServerVersion))
623+
if (server.ServerVersion != null)
624+
{
625+
scriptingOptions.TargetServerVersion = GetCompatibilityOptionFromVersion(server.Version);
626+
}
627+
else if (scriptCompatibilityMap.TryGetValue(this.Parameters.ScriptOptions.ScriptCompatibilityOption, out targetServerVersion))
592628
{
593629
scriptingOptions.TargetServerVersion = targetServerVersion;
594630
}
595631
else
596632
{
597633
//If you are getting this assertion fail it means you are working for higher
598634
//version of SQL Server. You need to update this part of code.
599-
Logger.Warning("This part of the code is not updated corresponding to latest version change");
635+
Logger.Warning("This part of the code is not updated corresponding to latest version change");
600636
}
601637

602638
// for cloud scripting to work we also have to have Script Compat set to 105.
603639
// the defaults from scripting options should take care of it
604640
SqlScriptOptions.ScriptDatabaseEngineType targetDatabaseEngineType;
605-
if (Enum.TryParse<SqlScriptOptions.ScriptDatabaseEngineType>(this.Parameters.ScriptOptions.TargetDatabaseEngineType, out targetDatabaseEngineType))
641+
if (server.DatabaseEngineType != null)
642+
{
643+
scriptingOptions.TargetDatabaseEngineType = server.DatabaseEngineType;
644+
}
645+
else if (Enum.TryParse<SqlScriptOptions.ScriptDatabaseEngineType>(this.Parameters.ScriptOptions.TargetDatabaseEngineType, out targetDatabaseEngineType))
606646
{
607647
switch (targetDatabaseEngineType)
608648
{
@@ -616,7 +656,11 @@ private void SetScriptingOptions(ScriptingOptions scriptingOptions)
616656
}
617657

618658
SqlScriptOptions.ScriptDatabaseEngineEdition targetDatabaseEngineEdition;
619-
if (Enum.TryParse<SqlScriptOptions.ScriptDatabaseEngineEdition>(this.Parameters.ScriptOptions.TargetDatabaseEngineEdition, out targetDatabaseEngineEdition))
659+
if (server.DatabaseEngineEdition != null)
660+
{
661+
scriptingOptions.TargetDatabaseEngineEdition = server.DatabaseEngineEdition;
662+
}
663+
else if (Enum.TryParse<SqlScriptOptions.ScriptDatabaseEngineEdition>(this.Parameters.ScriptOptions.TargetDatabaseEngineEdition, out targetDatabaseEngineEdition))
620664
{
621665
switch (targetDatabaseEngineEdition)
622666
{

0 commit comments

Comments
 (0)