Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
9db54d8
checkpoint
Benjin Dec 22, 2025
980bc57
fixing intermediate checkboxes
Benjin Dec 22, 2025
a2896ae
loc
Benjin Dec 22, 2025
880af92
swing at parsing connections out of ADS config
Benjin Dec 23, 2025
0129e6e
finding and reading from config file
Benjin Dec 23, 2025
4e45ebc
auth dropdown/textbox, collumn adjustments
Benjin Dec 23, 2025
584ecbe
loc
Benjin Dec 23, 2025
ffc187f
checkpoint
Benjin Dec 23, 2025
1ee6db3
loc
Benjin Dec 23, 2025
720db5f
Merge branch 'main' into dev/benjin/adsMigration
Benjin Dec 23, 2025
771510b
updating merge
Benjin Dec 23, 2025
54277a5
fixing merge
Benjin Dec 23, 2025
749d49c
fixing some alignment issues
Benjin Dec 23, 2025
d9c6343
swapped entra auth dropdown for button
Benjin Dec 24, 2025
46b10a7
Loc
Benjin Dec 24, 2025
4055b42
reading from entra account store correctly
Benjin Dec 24, 2025
ed98dd3
Partial entra auth dialog
Benjin Dec 24, 2025
aca84cb
mostly-working entra auth dialog
Benjin Dec 27, 2025
075cd04
Loc
Benjin Dec 27, 2025
0f225e3
cleaning up styling in entra auth dialog
Benjin Dec 27, 2025
2e7285d
loc
Benjin Dec 27, 2025
805812e
adding password
Benjin Dec 27, 2025
c20a0a5
password show/hide
Benjin Dec 27, 2025
5fe9922
fixing selection logic
Benjin Dec 27, 2025
bc38322
consolidating connection status check
Benjin Dec 27, 2025
c368ebf
warning dialog when incomplete connections are selected
Benjin Dec 27, 2025
3a63906
loc
Benjin Dec 27, 2025
ceb6acf
cleanup
Benjin Dec 27, 2025
196631f
fixing initialization order for Entra accounts
Benjin Dec 27, 2025
55cea28
implemented importing connections
Benjin Dec 27, 2025
ee2c361
visual cleanup
Benjin Dec 27, 2025
5645880
loc
Benjin Dec 27, 2025
0e5ba6b
checkpoint
Benjin Dec 27, 2025
2345947
adding tests
Benjin Dec 27, 2025
d34d965
fixing up tests
Benjin Dec 28, 2025
793f0fa
cleaning up connection parsing logic
Benjin Dec 28, 2025
b7b7194
Cleaning up header
Benjin Dec 28, 2025
2b93514
cleaning up warning message
Benjin Dec 28, 2025
f0094c3
fixing column alignment
Benjin Dec 28, 2025
aad3687
updating connection status after signing into entra account
Benjin Dec 28, 2025
334c529
cleanup
Benjin Dec 28, 2025
f4c0725
loc
Benjin Dec 28, 2025
c8ef9f9
fixing up tests
Benjin Dec 28, 2025
7f5b922
fixing scrolling
Benjin Dec 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 92 additions & 4 deletions extensions/mssql/l10n/bundle.l10n.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
"Get Started": "Get Started",
"Back": "Back",
"Warning": "Warning",
"Sign In": "Sign In",
"Clear All": "Clear All",
"OK": "OK",
"And": "And",
Expand Down Expand Up @@ -207,7 +208,6 @@
"Fabric Account": "Fabric Account",
"Select an account": "Select an account",
"Account": "Account",
"Sign In": "Sign In",
"Tenant ID": "Tenant ID",
"Authentication Type": "Authentication Type",
"Browse By": "Browse By",
Expand Down Expand Up @@ -939,6 +939,71 @@
"Unfreeze columns": "Unfreeze columns",
"x of y selected": "x of y selected",
"Equal to": "Equal to",
"Azure Data Studio Migration": "Azure Data Studio Migration",
"Bring your saved connections from Azure Data Studio into the MSSQL extension and discover familiar experiences.": "Bring your saved connections from Azure Data Studio into the MSSQL extension and discover familiar experiences.",
"Azure Data Studio settings file": "Azure Data Studio settings file",
"Select the Azure Data Studio settings.json file to scan for connection groups and connections.": "Select the Azure Data Studio settings.json file to scan for connection groups and connections.",
"Browse to Azure Data Studio settings.json": "Browse to Azure Data Studio settings.json",
"Browse": "Browse",
"Connection groups to import": "Connection groups to import",
"{0} of {1} connection groups selected./{0} is the number of groups selected for import{1} is the total number of groups detected": {
"message": "{0} of {1} connection groups selected.",
"comment": [
"{0} is the number of groups selected for import",
"{1} is the total number of groups detected"
]
},
"Connections in groups that are not selected will be moved under the root.": "Connections in groups that are not selected will be moved under the root.",
"No connection groups were found in the file.": "No connection groups were found in the file.",
"{0} color swatch ({1})/{0} is the connection group name{1} is the color value applied to the group": {
"message": "{0} color swatch ({1})",
"comment": [
"{0} is the connection group name",
"{1} is the color value applied to the group"
]
},
"Select or clear all connection groups": "Select or clear all connection groups",
"Toggle selection for {0}/{0} is the connection group name": {
"message": "Toggle selection for {0}",
"comment": ["{0} is the connection group name"]
},
"Connections to import": "Connections to import",
"{0} of {1} connections selected/{0} is the number of connections selected for import{1} is the total number of connections detected": {
"message": "{0} of {1} connections selected",
"comment": [
"{0} is the number of connections selected for import",
"{1} is the total number of connections detected"
]
},
"Select or clear all connections": "Select or clear all connections",
"No connections were found in the file.": "No connections were found in the file.",
"Profile name": "Profile name",
"<default>": "<default>",
"Auth type": "Auth type",
"User ID": "User ID",
"Status": "Status",
"Toggle selection for {0}/{0} is the connection display name": {
"message": "Toggle selection for {0}",
"comment": ["{0} is the connection display name"]
},
"Collapse connection groups": "Collapse connection groups",
"Expand connection groups": "Expand connection groups",
"Collapse connections": "Collapse connections",
"Expand connections": "Expand connections",
"This connection does not have a display name in Azure Data Studio.": "This connection does not have a display name in Azure Data Studio.",
"This value was not provided in the Azure Data Studio settings file.": "This value was not provided in the Azure Data Studio settings file.",
"Authentication": "Authentication",
"Enter password": "Enter password",
"Import selected": "Import selected",
"Some selections still need information": "Some selections still need information",
"You can continue, but you may need to edit these connections later before connecting.": "You can continue, but you may need to edit these connections later before connecting.",
"Connections needing attention": "Connections needing attention",
"Import anyway": "Import anyway",
"Importing selections": "Importing selections",
"Sign into additional accounts": "Sign into additional accounts",
"Select account": "Select account",
"Select an account for authentication": "Select an account for authentication",
"Select a Microsoft Entra ID account to use with this connection. The original account information from Azure Data Studio is listed below, but you can choose a different account.": "Select a Microsoft Entra ID account to use with this connection. The original account information from Azure Data Studio is listed below, but you can choose a different account.",
"Highlights": "Highlights",
"Resources": "Resources",
"Getting Started": "Getting Started",
Expand Down Expand Up @@ -1093,7 +1158,6 @@
"Error: ": "Error: ",
"Yes": "Yes",
"No": "No",
"<default>": "<default>",
"Connecting to: ": "Connecting to: ",
"Error connecting to: ": "Error connecting to: ",
"Error code: ": "Error code: ",
Expand Down Expand Up @@ -1652,7 +1716,6 @@
"Switching to Linux containers was canceled. SQL Server only supports Linux containers.": "Switching to Linux containers was canceled. SQL Server only supports Linux containers.",
"Failed to start SQL Server container. Please check the error message for more details, and then try again.": "Failed to start SQL Server container. Please check the error message for more details, and then try again.",
"Container does not exist. Would you like to remove the connection?": "Container does not exist. Would you like to remove the connection?",
"Enter password": "Enter password",
"Enter container name": "Enter container name",
"Enter port": "Enter port",
"Enter hostname": "Enter hostname",
Expand Down Expand Up @@ -1996,7 +2059,6 @@
"Failed to change database": "Failed to change database",
"No active connection for database change": "No active connection for database change",
"Connection Details": "Connection Details",
"Authentication": "Authentication",
"Server Version": "Server Version",
"Server Edition": "Server Edition",
"Cloud": "Cloud",
Expand Down Expand Up @@ -2176,6 +2238,32 @@
"message": "Failed to export results: {0}",
"comment": ["{0} is the error message"]
},
"Locate an Azure Data Studio settings.json file to import": "Locate an Azure Data Studio settings.json file to import",
"Ready": "Ready",
"Needs attention": "Needs attention",
"Already imported. Importing again will replace the existing connection with ID {0}/{0} is the connection ID": {
"message": "Already imported. Importing again will replace the existing connection with ID {0}",
"comment": ["{0} is the connection ID"]
},
"Already imported. Importing again will replace the existing group with ID {0}/{0} is the group ID": {
"message": "Already imported. Importing again will replace the existing group with ID {0}",
"comment": ["{0} is the group ID"]
},
"Enter the SQL Login password for user '{0}'./{0} is the SQL Login username": {
"message": "Enter the SQL Login password for user '{0}'.",
"comment": ["{0} is the SQL Login username"]
},
"Sign in with Entra ID '{0}'./{0} is the Entra ID username": {
"message": "Sign in with Entra ID '{0}'.",
"comment": ["{0} is the Entra ID username"]
},
"Unknown account": "Unknown account",
"Unknown tenant ID": "Unknown tenant ID",
"Import complete. You can close this dialog.": "Import complete. You can close this dialog.",
"Import failed: {0}/{0} is the error message returned from the import helper.": {
"message": "Import failed: {0}",
"comment": ["{0} is the error message returned from the import helper."]
},
"MSSQL: Welcome & What's New": "MSSQL: Welcome & What's New",
"Try it": "Try it",
"Watch demo": "Watch demo",
Expand Down
6 changes: 6 additions & 0 deletions extensions/mssql/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@
"@microsoft/ads-extension-telemetry": "^3.0.2",
"@microsoft/vscode-azext-azureauth": "^4.1.1",
"@xmldom/xmldom": "^0.8.11",
"strip-json-comments": "^5.0.1",
"axios": "^1.12.0",
"dotenv": "^16.4.5",
"error-ex": "^1.3.0",
Expand Down Expand Up @@ -1315,6 +1316,11 @@
"command": "mssql.openChangelog",
"title": "%mssql.openChangelog%",
"category": "MS SQL"
},
{
"command": "mssql.openAzureDataStudioMigration",
"title": "%mssql.openAzureDataStudioMigration%",
"category": "MS SQL"
}
],
"keybindings": [
Expand Down
1 change: 1 addition & 0 deletions extensions/mssql/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -266,5 +266,6 @@
"mssql.customEnvironment.fabricDataWarehouseDnsSuffix": "Sovereign cloud equivalent for `.datawarehouse.fabric.microsoft.com` (including leading dot)",
"mssql.customEnvironment.dynamicsCrmDnsSuffix": "Sovereign cloud equivalent for `.crm.dynamics.com` (including leading dot)",
"mssql.openChangelog": "Open Changelog",
"mssql.openAzureDataStudioMigration": "Migrate from Azure Data Studio",
"mssql.showChangelogOnUpdate": "Show changelog after extension updates"
}
1 change: 1 addition & 0 deletions extensions/mssql/scripts/bundle-reactviews.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ const config = {
publishProject: "src/reactviews/pages/PublishProject/index.tsx",
tableExplorer: "src/reactviews/pages/TableExplorer/index.tsx",
changelog: "src/reactviews/pages/Changelog/index.tsx",
azureDataStudioMigration: "src/reactviews/pages/AzureDataStudioMigration/index.tsx",
},
bundle: true,
outdir: "dist/views",
Expand Down
1 change: 1 addition & 0 deletions extensions/mssql/src/constants/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ export const cmdDeleteContainer = "mssql.deleteContainer";
export const cmdStartContainer = "mssql.startContainer";
export const cmdHandleSummaryOperation = "mssql.handleSummaryOperation";
export const cmdOpenChangelog = "mssql.openChangelog";
export const cmdOpenAzureDataStudioMigration = "mssql.openAzureDataStudioMigration";
export const cmdOpenGithubChat = "workbench.action.chat.open";
export const piiLogging = "piiLogging";
export const mssqlPiiLogging = "mssql.piiLogging";
Expand Down
49 changes: 49 additions & 0 deletions extensions/mssql/src/constants/locConstants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2414,6 +2414,55 @@ export class TableExplorer {
});
}

export class AzureDataStudioMigration {
public static PageTitle = l10n.t("Azure Data Studio Migration");
public static SelectConfigFileDialogTitle = l10n.t(
"Locate an Azure Data Studio settings.json file to import",
);
public static ConnectionStatusReady = l10n.t("Ready");
public static ConnectionStatusNeedsAttention = l10n.t("Needs attention");
public static ConnectionStatusAlreadyImported = (connectionId: string) =>
l10n.t({
message:
"Already imported. Importing again will replace the existing connection with ID {0}",
args: [connectionId],
comment: ["{0} is the connection ID"],
});

public static ConnectionGroupStatusAlreadyImported = (groupId: string) =>
l10n.t({
message:
"Already imported. Importing again will replace the existing group with ID {0}",
args: [groupId],
comment: ["{0} is the group ID"],
});
public static connectionIssueMissingSqlPassword = (username: string) =>
l10n.t({
message: "Enter the SQL Login password for user '{0}'.",
args: [username],
comment: ["{0} is the SQL Login username"],
});
public static connectionIssueMissingAzureAccount = (username: string) =>
l10n.t({
message: "Sign in with Entra ID '{0}'.",
args: [username],
comment: ["{0} is the Entra ID username"],
});

public static EntraSignInDialogUnknownAccount = l10n.t("Unknown account");
public static EntraSignInDialogUnknownTenant = l10n.t("Unknown tenant ID");

public static importProgressSuccessMessage = l10n.t(
"Import complete. You can close this dialog.",
);
public static importProgressErrorMessage = (error: string) =>
l10n.t({
message: "Import failed: {0}",
args: [error],
comment: ["{0} is the error message returned from the import helper."],
});
}

export class Changelog {
public static ChangelogDocumentTitle = l10n.t("MSSQL: Welcome & What's New");
public static tryIt = l10n.t("Try it");
Expand Down
Loading
Loading