diff --git a/localization/l10n/bundle.l10n.json b/localization/l10n/bundle.l10n.json index bff73f737a..8ae35df49c 100644 --- a/localization/l10n/bundle.l10n.json +++ b/localization/l10n/bundle.l10n.json @@ -658,6 +658,9 @@ "Processing include or exclude all differences operation.": "Processing include or exclude all differences operation.", "Select Profile": "Select Profile", "Save As...": "Save As...", + "Advanced Publish Options": "Advanced Publish Options", + "Ignore Options": "Ignore Options", + "Exclude Object Types": "Exclude Object Types", "Create New Connection Group": "Create New Connection Group", "Edit Connection Group: {0}/{0} is the name of the connection group being edited": { "message": "Edit Connection Group: {0}", @@ -1513,7 +1516,8 @@ "Failed to load publish profile": "Failed to load publish profile", "Publish profile saved to: {0}": "Publish profile saved to: {0}", "Failed to save publish profile": "Failed to save publish profile", - "DacFx service is not available": "DacFx service is not available", + "DacFx service is not available. Publish and generate script operations cannot be performed.": "DacFx service is not available. Publish and generate script operations cannot be performed.", + "DacFx service is not available. Profile loaded without deployment options. Publish and generate script operations cannot be performed.": "DacFx service is not available. Profile loaded without deployment options. Publish and generate script operations cannot be performed.", "Failed to list databases": "Failed to list databases", "Schema Compare": "Schema Compare", "Options have changed. Recompare to see the comparison?": "Options have changed. Recompare to see the comparison?", diff --git a/localization/xliff/vscode-mssql.xlf b/localization/xliff/vscode-mssql.xlf index c700223109..33600c2bb3 100644 --- a/localization/xliff/vscode-mssql.xlf +++ b/localization/xliff/vscode-mssql.xlf @@ -1,4687 +1,4699 @@ - - - - - is required. - - - $(plug) Connect to MSSQL - - - <Default> - - - <default> - - - (0 rows affected) - - - (1 row affected) - - - ({0} rows affected) - {0} is the number of rows affected - - - + Add Azure Account - - - + Add Fabric Account - - - + Create Connection Group - - - A SQL editor must have focus before executing this command - - - A firewall rule is required to access this server. - - - A highly integrated, developer-ready transactional database that auto-scales, auto-tunes, and mirrors data to OneLake for analytics across Fabric services - - - A predefined global default value for the column or binding. - - - A query is already running for this editor session. Please cancel this query or wait for its completion. - - - Accelerate schema evolution by autogenerating ORM migrations or T-SQL change scripts - - - Accept - - - Accept the SQL Server EULA to deploy a SQL Server Docker container - - - Access denied. Please ensure you have the necessary permissions to use this tool or model. - - - Access token expired for connection {0} with uri {1} - {0} is the connection id -{1} is the uri - - - Account - - - Account not found - - - Action - - - Actual Elapsed CPU Time - - - Actual Elapsed Time - - - Actual Number of Rows For All Executions - - - Add - - - Add Account - - - Add Column - - - Add Connection - - - Add Firewall Rule - - - Add Firewall Rule to {0} - {0} is the server name - - - Add Row - - - Add Server Connection - - - Add Table - - - Add a Microsoft Entra account... - - - Add account - - - Add my client IP ({0}) - {0} is the IP address of the client - - - Add new column - - - Add new foreign key - - - Additional parameters - - - Advanced - - - Advanced Connection Settings - - - Advanced Options - - - All permissions for extensions to access your connections have been cleared. - - - Allow Null - - - Allow Nulls - - - Allow this extension to access your connections - - - Alphabetical - - - Alter - - - Always Encrypted - - - Always show in new tab - - - An active connection is required for GitHub Copilot to understand your database schema and proceed. Select "{0}" to establish a connection. - {0} is the button text (e.g., 'Connect' or 'Open SQL editor and connect') - - - An error occurred refreshing nodes. See the MSSQL output channel for more details. - - - An error occurred while copying results: {0} - {0} is the error message - - - An error occurred while processing your request. - - - An error occurred while removing Microsoft Entra account: {0} - {0} is the error message - - - An error occurred while retrieving rows: {0} - {0} is the error message - - - An error occurred while searching database objects - - - An error occurred while searching database objects: {0} - {0} is the error detail returned from the search operation - - - An error occurred: {0} - {0} is the error message - - - An unexpected error occurred with the language model. Please try again. - - - An unknown error occurred. Please try again. - - - Analytics-ready by default - - - And - - - Application Intent - - - Apply - - - Apply changes to target - - - Apply contextual suggestions for SQL syntax, relationships, and constraints - - - Approve - - - Are you sure you want to delete the container {0}? This will remove both the container and its connection from VS Code. - {0} is the container name - - - Are you sure you want to delete the selected items? - - - Are you sure you want to delete {0}? - {0} is the group name - - - Are you sure you want to delete {0}? You can delete its connections as well, or move them to the root folder. - {0} is the group name - - - Are you sure you want to disconnect? - - - Are you sure you want to remove {0}? - {0} is the node label - - - Are you sure you want to update the target? - - - Are you sure you want to {0}? - {0} is the action being confirmed - - - Are you sure? - - - Authentication - - - Authentication Library has changed, please reload Visual Studio Code. - - - Authentication Type - - - Authentication error for account '{0}' (tenant '{1}'). Resolving this requires clearing your token cache, which will sign you out of all connected accounts. - {0} is the account display name -{1} is the tenant id - - - Authentication error for account. Resolving this requires clearing your token cache, which will sign you out of all connected accounts. - - - Authentication failed due to a nonce mismatch, please close Azure Data Studio and try again. - - - Authentication failed due to a state mismatch, please close ADS and try again. - - - Auto Arrange - - - Auto Arrange Confirmation - - - Auto Arrange will automatically reposition all diagram elements based on optimal layout algorithms. Any custom positioning you've created will be lost. Do you want to proceed with auto-arranging your schema diagram? - - - Automatic tuning features like automatic index creation enabled by default. - - - Available Servers - - - Average: {0} - {0} is the average - - - Average: {0} Count: {1} Sum: {2} - {0} is the average, {1} is the count, {2} is the sum - - - Azure (China) - - - Azure (Public) - - - Azure (US Government) - - - Azure Account - - - Azure Code Grant - - - Azure Device Code - - - Azure MFA - - - Azure sign in failed. - - - Azure: Sign In - - - Azure: Sign In to Azure Cloud - - - Azure: Sign In with Device Code - - - Back - - - Back to preview - - - Batch execution time: {0} - {0} is the batch time - - - Between - - - Blanks - - - Block this extension from accessing your connections - - - Brightness - - - Browse Azure - - - Browse By - - - Browse Fabric - - - CSV - - - Calling tool: {0} with {1}. - {0} is the tool function name -{1} is the SQL tool parameters - - - Cancel - - - Cancel failed: {0} - {0} is the error message - - - Cancel schema compare failed: '{0}' - {0} is the error message returned from the cancel operation - - - Canceled - - - Canceling - - - Canceling query - - - Canceling the query failed: {0} - {0} is the error message - - - Cannot cancel query as no query is running. - - - Cannot connect due to expired tokens. Please re-authenticate and try again. - - - Cannot create foreign key - - - Cannot exclude {0}. Included dependents exist - {0} is the name of the entry - - - Cannot exclude {0}. Included dependents exist, such as {1} - {0} is the name of the entry -{1} is the name of the blocking dependency preventing exclusion. - - - Cannot include {0}. Excluded dependents exist - {0} is the name of the entry - - - Cannot include {0}. Excluded dependents exist, such as {1} - {0} is the name of the entry -{1} is the name of the blocking dependency preventing inclusion. - - - Cascade - - - Change - - - Change Database - - - Change Password - - - Change database to '{1}' for connection '{0}'? - {0} is the connection ID -{1} is the database name - - - Changed Tables - - - Changed database context to "{0}" for document "{1}" - {0} is the database name -{1} is the document name - - - Changed database context to "{0}" on server "{1}" on document "{2}". - {0} is the database name -{1} is the server name -{2} is the document name - - - Changes published successfully - - - Changes saved successfully. - - - Changing database context to "{0}" on server "{1}" on document "{2}". - {0} is the database name -{1} is the server name -{2} is the document name - - - Changing database to '{1}' for connection '{0}' - {0} is the connection ID -{1} is the database name - - - Chat command not available in this VS Code version - - - Check Constraint - - - Check Constraints - - - Checking Docker Engine Configuration - - - Checking if Docker is installed - - - Checking if Docker is installed on your machine - - - Checking if Docker is running on your machine. If not, we'll start it for you. - - - Checking if Docker is started - - - Checking if the Docker Engine is configured correctly on your machine. - - - Checking pre-requisites - - - Choose An Action - - - Choose Query History - - - Choose SQL Language - - - Choose a Microsoft Entra account - - - Choose a Microsoft Entra tenant - - - Choose a connection profile from the list below - - - Choose a database from the list below - - - Choose a hostname for the container - - - Choose a name for the SQL Server Docker Container - - - Choose a port to host the SQL Server Docker Container - - - Choose an option to provision a database - - - Choose color - - - Choose the Right Version - - - Circular reference detected: '{0}' → '{1}' creates a cycle - {0} is source table -{1} is target table - - - Clear - - - Clear All - - - Clear Recent Connections List - - - Clear Selection - - - Clear Sort - - - Clear cache and refresh token - - - Clear permissions for all extensions to access your connections - - - Clear token cache - - - Click to cancel loading summary - - - Click to connect to a database - - - Click to load summary - - - Click to sign into an Azure account - - - Close - - - Close Designer - - - Close Find - - - Close Script Pane - - - Close properties pane - - - Close the current connection - - - Cloud - - - Collapse - - - Collapse All - - - Collapse Workspace Explorer - - - Color - - - Column - - - Column '{0}' already exists - {0} is the column name - - - Column '{0}' already has a foreign key - {0} is the column name - - - Column '{0}' cannot be null because it is a primary key - {0} is the column name - - - Column '{0}' is an identity column and cannot have a cascading foreign key - {0} is the column name - - - Column '{0}' must be a primary key - {0} is the referenced column - - - Column '{0}' not found - {0} is the column name - - - Column Name - - - Column max length cannot be empty - - - Column name cannot be empty - - - Column width must be at least {0} pixels. - {0} is the minimum column width in pixels - - - Columns - - - Columns in the primary key. - - - Command Timeout - - - Commands - - - Compare - - - Compare SQL Server editions - - - Comparison Details - - - Configure Linux containers - - - Configure Rosetta in Docker Desktop - - - Configure and customize SQL Server containers - - - Confirm Password - - - Confirm SQL Server admin password - - - Confirm new password - - - Confirm to clear recent connections list - - - Confirm to remove this profile. - - - Connect - - - Connect to Database - - - Connect to MSSQL - - - Connect to Server - - - Connect to a database - - - Connect to server {0} and database {1}? - {0} is the server name -{1} is the database name - - - Connect to server {0}? - {0} is the server name - - - Connect to {0} - {0} is the name of the connection profile - - - Connect using profile {0}? - {0} is the profile ID - - - Connected successfully - - - Connected to server "{0}" on document "{1}". Server information: {2} - {0} is the server name -{1} is the document name -{2} is the server info - - - Connected to: - - - Connecting - - - Connecting to Container - - - Connecting to Database - - - Connecting to server "{0}" on document "{1}". - {0} is the server name -{1} is the document name - - - Connecting to server {0} - {0} is the server name - - - Connecting to server {0} and database {1} - {0} is the server name -{1} is the database name - - - Connecting to your SQL Server Docker container - - - Connecting to {0}... - {0} is the connection display name - - - Connecting to: - - - Connecting using profile {0} - {0} is the profile ID - - - Connecting... - - - Connection Authentication - - - Connection Details - - - Connection Dialog - - - Connection Error - - - Connection Failed - - - Connection Group - - - Connection Profile could not be updated. Please modify the connection details manually in settings.json and try again. - - - Connection String - - - Connection Timeout - - - Connection error - - - Connection is not active. Please establish a connection before performing this action. - - - Connection not found for uri "{0}". - {0} is the uri - - - Connection profile '{0}' not found. - {0} is the profile ID - - - Connection sharing permission denied for extension: '{0}'. Use the permission management commands to change this. - {0} is the extension ID - - - Connection sharing permission is required for extension: '{0}' - {0} is the extension ID - - - Connection string is required - - - Connection with ID "{0}" not found. Please verify the connection ID exists. - {0} is the connection ID - - - Consider adding a name for this foreign key - - - Container Name - - - Container creation isn't supported on this system. ARM support will be available starting with the SQL Server 2025 CU1 container image. - - - Container does not exist. Would you like to remove the connection? - - - Container failed to start within the timeout period. Please wait a few minutes and try again. - - - Contains - - - Continue Editing - - - Copied - - - Copy - - - Copy As - - - Copy Headers - - - Copy Script - - - Copy Script to Clipboard - - - Copy as CSV - - - Copy as IN clause - - - Copy as INSERT INTO - - - Copy as JSON - - - Copy code and open webpage - - - Copy connection string to clipboard - - - Copy script - - - Copy with Headers - - - Copying results... - - - Cost - - - Count: {0} - {0} is the count - - - Count: {0} Distinct Count: {1} Null Count: {2} - {0} is the count, {1} is the distinct count, and {2} is the null count - - - Create - - - Create As Script - - - Create Connection Group - - - Create Connection Profile - - - Create Container - - - Create Database - - - Create Firewall Rule - - - Create Local SQL Container - - - Create New Connection Group - - - Create a Local Docker SQL Server - - - Create a SQL Server container in seconds—no manual steps required. Manage it easily from the MSSQL extension without leaving VS Code. - - - Create a SQL database in Fabric (Preview) - - - Create a new firewall rule - - - Create new firewall rule for {0} - {0} is the server name that the firewall rule will be created for - - - Creating Container - - - Creating SQL Database for workspace {0} - {0} is the workspace ID - - - Creating and starting your SQL Server container - - - Creating workspace with capacity {0} - {0} is the capacity ID - - - Credential Error: An error occurred while attempting to refresh account credentials. Please re-authenticate. - - - Currently signed in as: - - - Custom Zoom - - - DacFx service is not available - - - Data Type - - - Data automatically replicated to OneLake in real time with a SQL analytics endpoint. - - - Data type mismatch: '{0}' in column '{1}' incompatible with '{2}' in '{3}' - {0} is source data type -{1} is source column -{2} is target data type -{3} is target column - - - Data-tier Application File (.dacpac) - - - Database - - - Database - {0} - {0} is the database name - - - Database Description - - - Database Name - - - Database Name is required - - - Database Project - - - Database changed successfully - - - Database list - - - Database name - - - Database name is required - - - Default - - - Default Value - - - Definition - - - DefinitionRequestCompleted - - - DefinitionRequested - - - Delete - - - Delete Confirmation - - - Delete Contents - - - Delete Row - - - Delete saved connection - - - Deleting Container... - - - Deny - - - Deployment Failed - - - Deployment Name - - - Deployment in progress - - - Description - - - Description for the table. - - - Details - - - Developer-friendly transactional database using the Azure SQL Database Engine. - - - Disable intellisense and syntax error checking on current document - - - Disabled - - - Discard - - - Disconnect - - - Disconnect from connection '{0}'? - {0} is the connection ID - - - Disconnected on document "{0}" - {0} is the document name - - - Disconnected successfully - - - Disconnecting from connection '{0}' - {0} is the connection ID - - - Dismiss - - - Displays the data type name for the column - - - Displays the description of the column - - - Displays the unified data type (including length, scale and precision) for the column - - - Dissatisfied - - - Distinct Count: {0} - {0} is the distinct count - - - Do you mind taking a quick feedback survey about the MSSQL Extension for VS Code? - - - Do you want to always display query results in a new tab instead of the query pane? - - - Docker failed to start within the timeout period. Please manually start Docker and try again. - - - Docker is not installed or not in PATH. Please install Docker Desktop and try again. - - - Docker requires root permissions to run. Please run Docker with sudo or add your user to the docker group using sudo usermod -aG docker $USER. Then, reboot your machine and retry. - - - Don't Show Again - - - Easily set up a local SQL Server without leaving VS Code extension. Just a few clicks to install, configure, and manage your server effortlessly! - - - Edit - - - Edit Connection Group - {0} - {0} is the connection group name - - - Edit Connection Group: {0} - {0} is the name of the connection group being edited - - - Edit Connection Profile - - - Edit Table - - - Either profileId or serverName must be provided. - - - Enable 'Trust Server Certificate' - - - Enable Experiences & Reload - - - Enable Trust Server Certificate - - - Enabled - - - Encountering a problem? Share the details with us by opening a GitHub issue so we can improve! - - - Encrypt - - - Encryption was enabled on this connection; review your SSL and certificate configuration for the target SQL Server, or enable 'Trust server certificate' in the connection dialog. - - - Encryption was enabled on this connection; review your SSL and certificate configuration for the target SQL Server, or set 'Trust server certificate' to 'true' in the settings file. Note: A self-signed certificate offers only limited protection and is not a recommended practice for production environments. Do you want to enable 'Trust server certificate' on this connection and retry? - - - End IP Address - - - Ends With - - - Enter Database Description - - - Enter Database Name - - - Enter connection group name - - - Enter container name - - - Enter description (optional) - - - Enter desired column width in pixels - - - Enter hostname - - - Enter new column width - - - Enter new password - - - Enter part of an object name to search for - - - Enter password - - - Enter port - - - Enter profile name - - - Entra token cache cleared successfully. - - - Equals - - - Error - - - Error Message: - - - Error code: - - - Error connecting to server "{0}". Details: {1} - {0} is the server name -{1} is the error message - - - Error connecting to: - - - Error creating firewall rule {0}. Check your Azure account settings and try again. Error: {1} - {0} is the rule info in format 'name (startIp - endIp)' -{1} is the error message - - - Error generating text view. Please try switching back to grid view. - - - Error loading Azure account information for tenant ID '{0}' - {0} is the tenant ID - - - Error loading Azure databases for subscription {0} ({1}). Confirm that you have permission. - {0} is the subscription name -{1} is the subscription id - - - Error loading Azure databases. - - - Error loading Azure subscriptions. - - - Error loading databases - - - Error loading designer - - - Error loading preview - - - Error loading summary - - - Error loading summary: {0} - {0} is the error message - - - Error loading workspaces - - - Error loading workspaces. Please try choosing a different account or tenant. - - - Error loading; refresh to try again - - - Error migrating connection ID {0} to new format. Please recreate this connection to use it. Error: {1} - {0} is the connection id -{1} is the error message - - - Error occurred opening content in editor. - - - Error retrieving server list: {0} - {0} is the error message - - - Error running Docker commands. Please make sure Docker is running. - - - Error signing into Azure: {0} - {0} is the error message - - - Error when refreshing token - - - Error {0}: {1} - {0} is the error number -{1} is the error message - - - Error {0}: {1} Please login as a different user and change the password using ALTER LOGIN. - {0} is the error number -{1} is the error message - - - Error: - - - Error: Login failed. Retry using different credentials? - - - Error: Unable to connect using the connection information provided. Retry profile creation? - - - Excel - - - Execute - - - Executing query... - - - Execution Plan - - - Existing Azure SQL logical server - - - Existing SQL server - - - Expand - - - Expand All - - - Expand Workspace Explorer - - - Expand properties pane - - - Explore, design, and evolve database schemas using intelligent, code-first or data-first guidance - - - Explorer - - - Export - - - Expression - - - Extremely likely - - - Fabric API error occurred ({0}): {1} - {0} is the error code -{1} is the error message - - - Fabric Account - - - Fabric Account is required - - - Fabric Workspaces - - - Fabric is not supported in the current cloud ({0}). Ensure setting '{1}' is configured correctly. - {0} is the cloud name -{1} is the setting name - - - Fabric long-running API error with error code '{0}': {1} - {0} is the error code -{1} is the error message - - - Failed - - - Failed disposing query: {0} - {0} is the error message - - - Failed to apply changes: '{0}' - {0} is the error message returned from the publish changes operation - - - Failed to change database - - - Failed to connect - - - Failed to connect to database: {0} - {0} is the database name - - - Failed to connect to server. - - - Failed to connect: {0} - {0} is the error message - - - Failed to copy script: {0} - {0} is the error message - - - Failed to create a new row: {0} - {0} is the error message - - - Failed to delete credential with id: {0}. {1} - {0} is the id -{1} is the error - - - Failed to delete {0}. - Failed to delete {0}. - - - Failed to establish connection with ID "{0}". Please check connection details and network connectivity. - {0} is the connection ID - - - Failed to fetch user tokens. - - - Failed to generate publish script: '{0}' - {0} is the error message returned from the generate script operation - - - Failed to generate script: '{0}' - {0} is the error message returned from the generate script operation - - - Failed to generate script: {0} - {0} is the error message - - - Failed to get Fabric workspaces for tenant '{0} ({1})'. - {0} is the tenant name -{1} is the tenant id - - - Failed to get Fabric workspaces for tenant '{0} ({1})': {2} - {0} is the tenant name -{1} is the tenant id -{2} is the error message - - - Failed to get authentication method, please remove and re-add the account. - - - Failed to get tenant '{0}' for account '{1}'. - {0} is the tenant id -{1} is the account name - - - Failed to list databases - - - Failed to load data: {0} - {0} is the error message - - - Failed to load publish profile - - - Failed to open scmp file: '{0}' - {0} is the error message returned from the open scmp operation - - - Failed to open script: {0} - {0} is the error message - - - Failed to pull SQL Server image. Please check your network connection and try again. - - - Failed to refresh connection ${0} with uri {1}, invalid connection result. - {0} is the connection id -{1} is the uri - - - Failed to remove row: {0} - {0} is the error message - - - Failed to revert cell: {0} - {0} is the error message - - - Failed to revert row: {0} - {0} is the error message - - - Failed to save changes: {0} - {0} is the error message - - - Failed to save publish profile - - - Failed to save results. - - - Failed to save scmp file: '{0}' - {0} is the error message returned from the save scmp operation - - - Failed to start SQL Server container. Please check the error message for more details, and then try again. - - - Failed to start query. - - - Failed to start {0}. - Failed to start {0}. - - - Failed to stop {0}. - Failed to stop {0}. - - - Failed to update cell: {0} - {0} is the error message - - - Favorites - - - Fetch rows - - - Fetching {0} script... - {0} is the script type - - - File - - - Filter - - - Filter ({0}) - {0} is the number of selected tables - - - Filter Azure subscriptions - - - Filter Options - - - Filter Settings - - - Filter by keyword - - - Filter by type - - - Filter for any field... - - - Find - - - Find Next - - - Find Node - - - Find Nodes - - - Find Previous - - - Finish - - - Finished Deployment - - - Finished query execution for document "{0}" - {0} is the document name - - - Firewall rule name - - - Firewall rule successfully added. Retry profile creation? - - - Firewall rule successfully created. - - - First Page - - - Flat - - - Folder Structure - - - For numeric data, the maximum number of decimal digits that can be stored in this database object to the right of decimal point. - - - For numeric data, the maximum number of decimal digits that can be stored in this database object. - - - Foreign Column - - - Foreign Key - - - Foreign Key {0} - {0} is the index of the foreign key - - - Foreign Keys - - - Foreign Table - - - Foreign key '{0}' already exists - {0} is the foreign key name - - - Formula - - - Found pending reconnect promise for uri {0}, failed. - {0} is the uri - - - Found pending reconnect promise for uri {0}, waiting. - {0} is the uri - - - Found {0} saved connection profile(s). - {0} is the number of connection profiles - - - General - - - General Options - - - Generate Script - - - Generate mock data and seed scripts to support testing and development environments - - - Generate script to deploy changes to target - - - Generating Report. This may take a while... - - - Generating report, this might take a while... - - - Get Connection Details - - - Get Started - - - Get connection details for connection '{0}'? - {0} is the connection ID - - - Get security-related recommendations, such as avoiding SQL injection or excessive permissions - - - Getting Docker Ready... - - - Getting Fabric database '{0}' - {0} is the database ID - - - Getting Fabric workspace '{0}' - {0} is the workspace ID - - - Getting connection details for connection '{0}' - {0} is the connection ID - - - Getting connection string for SQL Endpoint '{0}' in workspace '{1}' - {0} is the SQL endpoint ID -{1} is the workspace ID - - - Getting container ready for connections - - - Getting definition ... - - - Got invalid tool use parameters: "{0}". ({1}) - {0} is the part input -{1} is the error message - - - Greater Than - - - Greater Than or Equals - - - Grid View - - - Help - - - Hide Confirm Password - - - Hide New Password - - - Hide Script - - - Hide full error message - - - Hide password - - - Hide this panel - - - Highlight Expensive Operation - - - Hostname - - - How likely it is that you would recommend the MSSQL extension to a friend or colleague? - - - How likely it is that you would recommend {0} to a friend or colleague? - {0} is the feature name - - - How many tables are in this database? - - - Hue - - - I have read the summary and understand the potential risks. - - - I'm sorry, I can only assist with SQL-related questions. - - - Ignore Tenant - - - Image tag - - - Importance - - - In progress - - - Include - - - Include Object Types - - - Include all object types - - - Index - - - Indexes - - - Initializing comparison, this might take a while... - - - Insert - - - Install Docker - - - Instant Container Setup - - - Insufficient Workspace Permissions - - - Integrated - - - Integrated & secure - - - Invalid Firewall rule name - - - Invalid IP Address - - - Invalid SQL Server password for {0}. Password must be 8–128 characters long and meet the complexity requirements. For more information see https://docs.microsoft.com/sql/relational-databases/security/password-policy - - - Invalid column width - - - Invalid connection URI provided. - - - Invalid connection URI. Please ensure you have an active database connection. - - - Invalid connection string: {0} - - - Invalid max length '{0}' - {0} is the max length - - - Is Computed - - - Is Identity - - - Is Persisted - - - Issues ({0}) - {0} is the number of issues - - - JPEG - - - JSON - - - Keep in query pane - - - Keys for token cache could not be saved in credential store, this may cause Microsoft Entra Id access token persistence issues and connection instabilities. It's likely that SqlTools has reached credential storage limit on Windows, please clear at least 2 credentials that start with "Microsoft.SqlTools|" in Windows Credential Manager and reload. - - - Last Page - - - Learn More - - - Learn more about SQL Server 2025 features - - - Length - - - Length mismatch: Column '{0}' ({1}) incompatible with '{2}' ({3}) - {0} is source column -{1} is source length -{2} is target column -{3} is target length - - - Less Than - - - Less Than or Equals - - - Line {0} - {0} is the line number - - - List Connections - - - List Databases - - - List Functions - - - List Schemas - - - List Tables - - - List Views - - - List all connections registered with the mssql extension? - - - List databases for connection '{0}'? - {0} is the connection ID - - - List functions for connection '{0}'? - {0} is the connection ID - - - List schemas for connection '{0}'? - {0} is the connection ID - - - List tables for connection '{0}'? - {0} is the connection ID - - - List views for connection '{0}'? - {0} is the connection ID - - - Listing Fabric SQL Databases for workspace '{0}' - {0} is the workspace ID - - - Listing Fabric SQL Endpoints for workspace '{0}' - {0} is the workspace ID - - - Listing Fabric capacities for tenant '{0}' - {0} is the tenant ID - - - Listing Fabric workspaces for tenant '{0}' - {0} is the tenant ID - - - Listing databases for connection '{0}' - {0} is the connection ID - - - Listing functions for connection '{0}' - {0} is the connection ID - - - Listing role assignments for workspace '${workspaceId}' - {0} is the workspace ID - - - Listing schemas for connection '{0}' - {0} is the connection ID - - - Listing server connections - - - Listing tables for connection '{0}' - {0} is the connection ID - - - Listing views for connection '{0}' - {0} is the connection ID - - - Load - - - Load from Connection String - - - Load profile... - - - Load source, target, and options saved in an .scmp file - - - Loading - - - Loading Azure Accounts - - - Loading Fabric Accounts - - - Loading Report - - - Loading Schema Designer - - - Loading Schema Designer Model... - - - Loading Table Designer - - - Loading databases in '{0}'... - {0} is the name of the workspace - - - Loading databases in selected workspace... - - - Loading deployment - - - Loading execution plan... - - - Loading fabric provisioning... - - - Loading local containers... - - - Loading results... - - - Loading summary for {0} rows (Click to cancel) - {0} is the total number of rows - - - Loading table data... - - - Loading tenants... - - - Loading text view... - - - Loading workspaces - - - Loading workspaces... - - - Loading... - - - Local SQL Server database container - - - Local development container - - - Location - - - Location (Workspace) - - - MSSQL - - - MSSQL - Azure Auth Logs - - - MSSQL Feedback - - - Manage Connection Profiles - - - Manage relationships - - - Mandatory (Recommended) - - - Mandatory (True) - - - Max Length - - - Max row count for filtering/sorting has been exceeded. To update it, navigate to User Settings and change the setting: mssql.resultsGrid.inMemoryDataProcessingThreshold - - - Max: {0} - {0} is the max - - - Maximize - - - Maximize Panel Size - - - Maximize panel size - - - Message - - - Messages - - - Metric - - - Microsoft Account - - - Microsoft Account is required - - - Microsoft Corp - - - Microsoft Entra Account - - - Microsoft Entra Id - - - Microsoft Entra Id - Universal w/ MFA Support - - - Microsoft Entra account {0} successfully added. - {0} is the account name - - - Microsoft SQL Server License Agreement - - - Microsoft reviews your feedback to improve our products, so don't share any personal data or confidential/proprietary content. - - - Microsoft will process the feedback you submit pursuant to your organization’s instructions in order to improve your and your organization’s experience with this product. If you have any questions about the use of feedback data, please contact your tenant administrator. Processing of feedback data is governed by the Microsoft Products and Services Data Protection Addendum between your organization and Microsoft, and the feedback you submit is considered Personal Data under that addendum. - - - Microsoft will process the feedback you submit pursuant to your organization’s instructions in order to improve your and your organization’s experience with this product. If you have any questions... - - - Microsoft would like your feedback - - - Min: {0} - {0} is the min - - - Move Down - - - Move Up - - - Move to Root - - - My Data - - - NULL - - - Name - - - Name of the primary key. - - - New Azure SQL logical server (Preview) - - - New Check Constraint - - - New Column - - - New Column Mapping - - - New Deployment - - - New Foreign Key - - - New Index - - - New Microsoft Entra account could not be added. - - - New Password - - - New SQL Server local development container - - - New SQL database - - - New column mapping - - - Next - - - Next Page - - - No - - - No Action - - - No Microsoft Entra account can be found for removal. - - - No Queries Available - - - No account selected - - - No active connection - - - No active connection for database change - - - No active connection for schema view - - - No active database connection in the current editor. Please establish a connection to continue. - - - No active database connection. Please connect to a database first. - - - No active text editor found. Please open a file with an active database connection. - - - No changes detected - - - No connection credentials found - - - No connection found for connectionId: {0} - {0} is the connection ID - - - No connection information found - - - No connection profile to remove. - - - No connection was found. Please connect to a server first. - - - No data available - - - No database objects found matching '{0}' - {0} is the search term - - - No databases found in the selected workspace. - - - No databases found in workspace '{0}'. - {0} is the name of the workspace - - - No items - - - No model found. - - - No need to refresh Microsoft Entra acccount token for connection {0} with uri {1} - {0} is the connection id -{1} is the uri - - - No pending changes. Make edits to generate a script. - - - No results - - - No results for the active editor - - - No results to display - - - No saved connection profiles found. - - - No schema differences were found. - - - No script available. Make changes to the table data and generate a script first. - - - No subscriptions available. Adjust your subscription filters to try again. - - - No tenant selected - - - No tools to process. - - - No workspaces found - - - No workspaces found. Please change Fabric account or tenant to view available workspaces. - - - Non-SQL Server SQL file detected. Disable IntelliSense for such files? - - - None - - - Not Between - - - Not Contains - - - Not Ends With - - - Not Equals - - - Not Starts With - - - Not likely at all - - - Not signed in - - - Not started - - - Note: A self-signed certificate offers only limited protection and is not a recommended practice for production environments. Do you want to enable 'Trust server certificate' on this connection and retry? - - - Null Count: {0} - {0} is the null count - - - Number of Rows Read - - - OK - - - OLTP, built on Azure SQL - - - Object Explorer Filter - - - Object Type - - - Off - - - On Delete - - - On Delete Action - - - On Update - - - On Update Action - - - Open - - - Open .scmp file - - - Open Publish Script - - - Open Query - - - Open Query History - - - Open SQL editor and connect - - - Open XML - - - Open in Editor - - - Open in New Tab - - - Open in SQL Editor - - - Open in editor - - - Opening Publish Script. This may take a while... - - - Opening schema designer... - - - Operator - - - Option Description - - - Optional (False) - - - Options - - - Options have changed. Recompare to see the comparison? - - - Overall, how satisfied are you with the MSSQL extension? - - - Overall, how satisfied are you with {0}? - {0} is the feature name - - - PNG - - - Parameters - - - Parent node was not TreeNodeInfo. - - - Password - - - Password (SQL Login) - - - Password is required - - - Password must be changed for '{0}' to continue logging into '{1}' - {0} is the username -{1} is the name of the server - - - Password must be changed to continue logging into '{0}' - {0} is the name of the server - - - Passwords do not match - - - Paste - - - Paste connection string from clipboard - - - Path: {0} - {0} is the path of the node in the object explorer - - - Pick from multiple SQL Server versions, including SQL Server 2025 (Preview) with built-in AI capabilities like vector search and JSON enhancements. - - - Please Accept the SQL Server EULA - - - Please choose a unique name for the container - - - Please choose a unique name for the profile - - - Please make sure the port is a number, and choose a port that is not in use - - - Please make your password 8-128 characters long. - - - Please select a workspace where you have sufficient permissions (Contributor or higher) - - - Port - - - Port must be a number between 1 and 65535 - - - Possible Data Loss detected. Please review the changes. - - - Precision - - - Precision/scale mismatch between '{0}' and '{1}' - {0} is source column -{1} is target column - - - Preview Database Updates - - - Previous - - - Previous Page - - - Previous pending reconnect promise for uri {0} is rejected with error {1}, will attempt to reconnect if necessary. - {0} is the uri -{1} is the error - - - Previous pending reconnection for uri {0}, succeeded. - {0} is the uri - - - Previous step failed. Please check the error message and try again. - - - Primary Key - - - Primary Key Columns - - - Privacy Statement - - - Processing include or exclude all differences operation. - - - Profile Name - - - Profile created and connected - - - Profile created successfully - - - Profile removed successfully - - - Properties - - - Property - - - Provider '{0}' does not have a Microsoft resource endpoint defined. - {0} is the provider - - - Provisioning - - - Publish - - - Publish Changes - - - Publish Profile - - - Publish Project - - - Publish Settings File - - - Publish Target - - - Publish profile saved to: {0} - - - Publishing Changes - - - Pulling SQL Server Image - - - Pulling the SQL Server container image. This might take a few minutes depending on your internet connection. - - - Query Plan ({0}) - {0} is the number of query plans - - - Query executed - - - Query failed - - - Query succeeded - - - Query {0}: Query cost (relative to the script): {1}% - {0} is the query number -{1} is the query cost - - - Read more - - - Readying container for connections. - - - Readying container for connections... - - - Receive natural language explanations to help developers unfamiliar with T-SQL understand code - - - Recent - - - Recent Connections - - - Recent connections list cleared - - - Redo - - - Referenced column '{0}' not found - {0} is the column name - - - Referenced table '{0}' not found - {0} is the table name - - - Refresh - - - Refresh Credentials - - - Reload Visual Studio Code - - - Remind Me Later - - - Remove - - - Remove Sort - - - Remove recent connection - - - Remove {0} - {0} is the object type - - - Replication - - - Required - - - Reset - - - Resize - - - Resize column '{0}' - {0} is the name of the column - - - Resource Group - - - Restore - - - Restore Panel Size - - - Restore panel size - - - Restore properties pane - - - Result Set {0} - {0} is the index of the result set - - - Results - - - Results ({0}) - {0} is the number of results - - - Results copied to clipboard - - - Retry - - - Reverse Alphabetical - - - Reverse-engineer existing databases by explaining SQL schemas and relationships - - - Revert Cell - - - Revert Row - - - Rosetta is required to run SQL Server container images on Apple Silicon. Enable "Use Rosetta for x86_64/amd64 emulation on Apple Silicon" in Docker Desktop > Settings > General. - - - Row created. - - - Row removed. - - - Rows per page - - - Rule name - - - Run Query - - - Run Query History - - - Run a query in the current editor, or switch to an editor that has results. - - - Run query on connection '{0}'? Query: {1} - {0} is the connection ID -{1} is the SQL query - - - Running query is not supported when the editor is in multiple selection mode. - - - Running query on connection '{0}' - {0} is the connection ID - - - SQL Analytics Endpoint - - - SQL Container Name - - - SQL Container Version - - - SQL Database - - - SQL Login - - - SQL Plan Files - - - SQL Server 2025 is not supported on ARM architecture. Please select a different SQL Server version. - - - SQL Server 2025 is not yet supported on ARM architecture. ARM support will be available starting with the SQL Server 2025 CU1 container image. - - - SQL Server Container SA Password - - - SQL Server admin password - - - SQL Server does not support Windows containers. Please switch to Linux containers in Docker Desktop settings. - - - SQL Server port number - - - SQL Server {0} - latest - {0} is the SQL Server version - - - SQL database in Fabric (Preview) - - - SQLCMD Variables - - - SVG - - - Satisfied - - - Saturation - - - Save - - - Save .scmp file - - - Save As - - - Save As... - - - Save Changes - - - Save Connection Group - - - Save Password - - - Save Password? If 'No', password will be required each time you connect - - - Save Plan - - - Save as CSV - - - Save as Excel - - - Save as INSERT - - - Save as JSON - - - Save results command cannot be used with multiple selections. - - - Save source and target, options, and excluded elements - - - Saved Connections - - - Scaffold backend components (e.g., data-access layers) based on your current database context - - - Scale - - - Scale mismatch between '{0}' and '{1}' - {0} is source column -{1} is target column - - - Schema - - - Schema Compare - - - Schema Compare Options - - - Schema Compare failed: '{0}' - {0} is the error message returned from the compare operation - - - Schema Designer - - - Schema Designer Model is ready. Changes can now be published. - - - Schema visualization opened. - - - Schema/Object Type - - - Script - - - Script As Create - - - Script copied to clipboard - - - Script copied to clipboard. - - - Search Workspaces - - - Search connection groups - - - Search for database objects... - - - Search options... - - - Search settings... - - - Search tables... - - - Search term cannot be empty - - - Search workspaces... - - - Search... - - - See - - - Select - - - Select All - - - Select Azure account with Key Vault access for column decryption - - - Select Connection - - - Select Profile - - - Select Source - - - Select Source Schema - - - Select Target - - - Select Target Schema - - - Select a Workspace - - - Select a connection group - - - Select a tenant - - - Select a valid {0} from the dropdown - {0} is the type of the dropdown's contents, e.g 'resource group' or 'server' - - - Select a workspace to view the databases in it. - - - Select a {0} for filtering - {0} is the type of the dropdown's contents, e.g 'resource group' or 'server' - - - Select all - - - Select all options - - - Select an account - - - Select an extension to manage connection sharing permissions - - - Select an object to view its definition ({0} results) - {0} is the number of results - - - Select image - - - Select new permission for extension: '{0}' - {0} is the extension name - - - Select profile to remove - - - Select subscriptions - - - Select the SQL Server Container Image - - - Selected Microsoft Entra account removed successfully. - - - Server - - - Server - {0} - {0} is the server name - - - Server Edition - - - Server Version - - - Server connection in progress. Do you want to cancel? - - - Server could not start. This could be a permissions error or an incompatibility on your system. You can try enabling device code authentication from settings. - - - Server is required - - - Server name not set. - - - Server name or ADO.NET connection string - - - Server {0} not found. - {0} is the server name - - - Set Default - - - Set Null - - - Setting up - - - Setting up container - - - Settings - - - Severity - - - Show All - - - Show Confirm Password - - - Show MSSQL output - - - Show Menu (F3) - - - Show New Password - - - Show Schema - - - Show Script - - - Show a random table definition - - - Show full error message - - - Show password - - - Show schema for connection '{0}'? - {0} is the connection ID - - - Show table relationships - - - Showing schema for connection '{0}' - {0} is the connection ID - - - Showplan XML - - - Sign In - - - Sign in - - - Sign in to a new account - - - Sign in to your Azure subscription - - - Sign in to your Azure subscription in one of the sovereign clouds. - - - Sign in to your Azure subscription with a device code. Use this in setups where the Sign In command does not work - - - Sign into Azure - - - Sign into Azure in order to add a firewall rule. - - - Sign into Fabric - - - Signing in to Azure... - - - Simple Container Management - - - Smart performance - - - Sort - - - Sort Ascending - - - Sort Descending - - - Source - - - Source Column - - - Source Name - - - Specifies whether the column is included in the primary key for the table. - - - Specifies whether the column may have a NULL value. - - - Start IP Address - - - Start Time - - - Start, stop, and remove containers directly from the extension. - - - Started executing query at - - - Started query execution for document "{0}" - {0} is the document name - - - Started saving results to - - - Starting Container... - - - Starting Docker... - - - Starting {0}... - {0} is the container name - - - Starts With - - - Stop - - - Stopping Container... - - - Submit - - - Submit an issue - - - Subscription - - - Subtree Cost - - - Succeeded - - - Succeeded with warning - - - Successfully changed to database: {0} - {0} is the database name - - - Successfully connected to server. - - - Successfully refreshed token for connection {0} with uri {1}, {2} - {0} is the connection id -{1} is the uri -{2} is the message - - - Successfully saved results to - - - Sum: {0} - {0} is the sum - - - Summary loading canceled - - - Summary loading was canceled by user - - - Switch Direction - - - Switch Source and Target - - - Switch to Grid View - - - Switch to MSAL - - - Switch to Text View - - - Switching to Linux containers was canceled. SQL Server only supports Linux containers. - - - Table - - - Table '{0}' already exists - {0} is the table name - - - Table '{0}' not found - {0} is the table name - - - Table Explorer for '{0}' has unsaved changes. Do you want to save or discard them? - {0} is the table name - - - Table Explorer: {0} (Preview) - {0} is the table name - - - Table name - - - Table name cannot be empty - - - Take Survey - - - Target - - - Target Name - - - Target Table - - - Tenant - - - Tenant ID - - - Tenant ID is required - - - Terms & Conditions - - - Test Connection - - - Testing connection profile... - - - Text View - - - The MSSQL for VS Code extension is introducing new modern data development features! Would you like to enable them? [Learn more]({0}) - {0} is a url to learn more about the new features - - - The SQL Server 2025 RTM container image isn't compatible with ARM-based systems (including Windows ARM and Apple Silicon). - - - The behavior when a user tries to delete a row with data that is involved in a foreign key relationship. - - - The behavior when a user tries to update a row with data that is involved in a foreign key relationship. - - - The columns of the index. - - - The connection with ID '{0}' does not have the 'server' property set and is being ignored. Please set the 'server' property on this connection in order to use it. - {0} is the connection ID for the connection that has been ignored - - - The custom cloud choice is not configured. Please configure the setting `{0}`. - - - The description of the check constraint. - - - The description of the foreign key. - - - The description of the index. - - - The description of the primary key. - - - The expression defining the check constraint. - - - The extension '{0}' is requesting access to your SQL Server connections. This will allow it to execute queries and access your database. - {0} is the extension name - - - The first value must be less than the second value for the {0} operator in the {1} filter - {0} is the operator for the filter -{1} is the name of the filter - - - The first value must be set for the {0} operator in the {1} filter - {0} is the operator for the filter -{1} is the name of the filter - - - The following workspace or workspace folder connections are missing the 'id' property and are being ignored. Please manually add the 'id' property to the connection in order to use it. {0} - {0} is the list of display names for the connections that have been ignored - - - The language model did not return any output. - - - The mapping between foreign key columns and primary key columns. - - - The maximum length (in characters) that can be stored in this database object. - - - The name of the check constraint. - - - The name of the column object. - - - The name of the column. - - - The name of the foreign key. - - - The name of the index. - - - The recent connections list has been cleared but there were errors while deleting some associated credentials. View the errors in the MSSQL output channel. - - - The requested model could not be found. Please check model availability or try a different model. - - - The second value must be set for the {0} operator in the {1} filter - {0} is the operator for the filter -{1} is the name of the filter - - - The table which contains the primary or unique key column. - - - There was an error updating the project - - - This database name is already in use. Please choose a different name. - - - This message couldn't be processed. If this issue persists, please check the logs and open an issue on GitHub. - - - Timestamp - - - To compare two schemas, first select a source schema and target schema, then press compare. - - - To use this command, Open a .sql file -or- Change editor language to "SQL" -or- Select T-SQL text in the active SQL editor. - - - To use this command, you must set the language to "SQL". Confirm to change language mode. - - - Toggle Tooltips - - - Tool lookup for: {0} - {1}. - {0} is the part name -{1} is the part input - - - Total execution time: {0} - {0} is the elapsed time - - - Total rows to fetch: - - - Type - - - Unable to execute the command while the extension is initializing. Please try again later. - - - Unable to expand. Please check logs for more information. - - - Unable to open Table Explorer: No target node provided. - - - Unable to read proxy agent options to get tenants. - - - Understand and document business logic embedded in stored procedures, views, and functions - - - Undo - - - Unknown error - - - Unnamed Profile - - - Unsupported architecture for Docker: {0} - {0} is the architecture name of the machine - - - Unsupported platform for Docker: {0} - {0} is the platform name of the machine - - - Update - - - Update Database - - - Update Script - - - Updating IntelliSense... - - - Usage limits exceeded. Try again later, or consider optimizing your requests. - - - Use T-SQL intellisense and syntax error checking on current document - - - Use {0} to create a new connection. - {0} is the connect command - - - User - - - User name - - - User name (SQL Login) - - - User name is required - - - Username - - - Using {0} ({1})... - {0} is the model name -{1} is whether the model can send requests - - - Using {0} to process your request... - {0} is the model name that will be processing the request - - - Value - - - Very Dissatisfied - - - Very Satisfied - - - View More - - - View mssql for Visual Studio Code release notes? - - - Visual Studio Code must be relaunched for this setting to come into effect. Please reload Visual Studio Code. - - - Warning - - - Warnings detected. Please review the changes. - - - We can't find where Docker Desktop is located on your machine. Please manually start Docker Desktop and try again. - - - We couldn't connect using the current connection information. Would you like to retry the connection or edit the connection profile? - - - What I can do for you: - - - What can we do to improve? - - - Width cannot be 0 or negative - - - Windows Authentication - - - Works with VS Code/SSMS and uses Microsoft Entra authentication and Fabric access controls. - - - Workspace - - - Workspace is required - - - Write, optimize, and troubleshoot SQL queries with AI-recommended improvements - - - Yes - - - You are not connected to any database. - - - You must accept the license - - - You must be signed into Azure in order to browse SQL databases. - - - You must be signed into Fabric in order to browse SQL databases. - - - You must review and accept the terms to proceed - - - Your Docker Engine currently runs Windows containers. SQL Server only supports Linux containers. Would you like to switch to Linux containers? - - - Your account needs re-authentication to access {0} resources. Press Open to start the authentication process. - {0} is the resource - - - Your client IP Address '{0}' does not have access to the server '{1}' you're attempting to connect to. Would you like to create new firewall rule? - {0} is the client IP address -{1} is the server name - - - Your client IP address does not have access to the server. Add a Microsoft Entra account and create a new firewall rule to enable access. - - - Your password must contain characters from at least three of the following categories: uppercase letters, lowercase letters, numbers (0-9), and special characters (!, $, #, %, etc.). - - - Your tenant '{0} ({1})' requires you to re-authenticate again to access {2} resources. Press Open to start the authentication process. - {0} is the tenant name -{1} is the tenant id -{2} is the resource - - - Zoom In - - - Zoom Out - - - Zoom to Fit - - - [Optional] Database to connect (press Enter to connect to <default> database) - - - [Optional] Enter a display name for this connection profile - - - authenticationType - - - database - - - default - - - delete the saved connection: {0}? - {0} is the connection name - - - encrypt - - - for more details - - - hostname\instance or <server>.database.windows.net or ADO.NET connection string - - - intelliSenseUpdated - - - location - - - macOS Sierra or newer is required to use this feature. - - - resource group - - - server - - - subscription - - - test - - - untitled - - - updatingIntelliSense - - - {0} (Current Account) - {0} is the account display name - - - {0} (filtered) - - - {0} accounts - {0} is the number of accounts - - - {0} column data - {0} is the number of columns - - - {0} deleted successfully. - {0} deleted successfully. - - - {0} errors - {0} is the number of errors - - - {0} has been closed. Would you like to restore it? - {0} is the webview name - - - {0} invalid Entra accounts have been removed; you may need to run `MS SQL: Clear Microsoft Entra account token cache` and log in again. - {0} is the number of invalid accounts that have been removed - - - {0} issue - {0} is the number of issues - - - {0} issues - {0} is the number of issues - - - {0} of {1} - {0} is the number of active elements -{1} is the total number of elements - - - {0} password doesn't match the confirmation password - - - {0} properties - {0} is the object type - - - {0} rows selected, click to load summary - {0} is the number of rows to fetch summary statistics for - - - {0} selected - {0} is the number of selected rows - - - {0} started successfully. - {0} started successfully. - - - {0} stopped successfully. - {0} stopped successfully. - - - {0} warnings - {0} is the number of warnings - - - {0} {1} issue - {0} is the tab name -{1} is the number of issues - - - {0} {1} issues - {0} is the tab name -{1} is the number of issues - - - {0}. {1} - {0} is the status -{1} is the message - - - {0}: {1} - {0} is the task name -{1} is the status - - - {0}: {1}. {2} - {0} is the task name -{1} is the status -{2} is the message - - - {{put-server-name-here}} - - - ✅ Grant Access - - - ✅ Grant Access (Current) - - - ❌ Deny Access - - - ❌ Deny Access (Current) - - - 👋 I'm GitHub Copilot for MSSQL extension, your intelligent SQL development assistant in Visual Studio Code. I help you connect, explore, design, and evolve your SQL databases directly from VS Code. - - - - - Add Connection - - - Add Connection Group - - - Add Microsoft Entra Account - - - Allows users to sign in to input-constrained devices. - - - Always Encrypted - - - An execution time-out of 0 indicates an unlimited wait (no time-out) - - - Analyze Query Performance - - - Application Intent - - - Automatically adjust the column widths based on the visible rows in the result set. Could have performance problems with a large number of columns or large cells - - - Automatically display query results in a new tab instead of the query pane. This option takes effect only if `mssql.enableRichExperiences` is enabled. - - - Automatically reveal the results panel when switching to an editor with query results. Only applies when 'Open Results in Tab' is enabled. - - - Azure MFA - - - Cancel Query - - - Change Connection - - - Change Database - - - Choose SQL handler for this file - - - Chooses which Authentication method to use - - - Clear All Connection Sharing Permissions - - - Clear All Query History - - - Clear Filters - - - Clear Microsoft Entra account token cache - - - Clear Pooled Connections - - - Command Timeout - - - Connect - - - Connect to a SQL Database - - - Connection Dialog - - - Connection Timeout - - - Connection groups - - - Connection profiles defined in 'User Settings' are shown under 'MS SQL: Connect' command in the command palette. - - - Connections - - - Controls the max number of rows allowed to do filtering and sorting in memory. If the number is exceeded, sorting and filtering will be disabled. Warning: Increasing this may impact performance. - - - Copy All - - - Copy Object Name - - - Create Azure Function with SQL binding - - - Create a Table with Table Designer - - - Create a new table in your database, or edit existing tables with the table designer. Once you're done making your changes, click the 'Publish' button to send the changes to your database. - - - Default view mode for query results display. - - - Delete - - - Delete Connection Group - - - Delete Container - - - Disable Actual Plan - - - Disable Group By Schema - - - Disabled - - - Disconnect - - - Display results in a formatted text format. - - - Display results in a tabular grid format (default) - - - Do not show prompts to display query results in a new tab. - - - Do not show prompts to enable UI-based features - - - Edit Connection - - - Edit Connection Group - - - Edit Connection Sharing Permissions - - - Enable Actual Plan - - - Enable Group By Schema - - - Enable Modern Features - - - Enable Modern Features - - - Enable Parameterization for Always Encrypted - - - Enable Query History Capture - - - Enable SET ANSI_DEFAULTS - - - Enable SET ANSI_NULLS - - - Enable SET ANSI_NULL_DFLT_ON - - - Enable SET ANSI_PADDING - - - Enable SET ANSI_WARNINGS - - - Enable SET ARITHABORT option - - - Enable SET CURSOR_CLOSE_ON_COMMIT - - - Enable SET DEADLOCK_PRIORITY option - - - Enable SET IMPLICIT_TRANSACTIONS - - - Enable SET LOCK TIMEOUT option (in milliseconds) - - - Enable SET NOCOUNT option - - - Enable SET NOEXEC option - - - Enable SET PARSEONLY option - - - Enable SET QUERY_GOVERNOR_COST_LIMIT - - - Enable SET QUOTED_IDENTIFIER - - - Enable SET STATISTICS IO option - - - Enable SET STATISTICS TIME option - - - Enable SET TRANSACTION ISOLATION LEVEL option - - - Enable SET XACT_ABORT ON option - - - Enable expand/collapse buttons in Schema Designer table nodes when tables have more than 10 columns - - - Enable modern features in MSSQL - - - Enable the new set of data development features that provide a modern way to work with your SQL database in VS Code. [Enable New Experiences](command:mssql.enableRichExperiences) - - - Enabled - - - Enables UI-based features in the MSSQL extension for richer and more powerful features. Restart Visual Studio Code after changing this setting. - - - Enables connection pooling to improve overall connectivity performance. This setting is disabled by default. Visual Studio Code is required to be relaunched when the value is changed. To clear pooled connections, run the command: 'MS SQL: Clear Pooled Connections'. Note: May keep serverless databases active and prevent auto-pausing. - - - Enables experimental features in the MSSQL extension. The features are not production-ready and may have bugs or issues. Restart Visual Studio Code after changing this setting. - - - Enables use of the Sql Authentication Provider for 'Microsoft Entra Id Interactive' authentication mode when user selects 'AzureMFA' authentication. This enables Server-side resource endpoint integration when fetching access tokens. This option is only supported for 'MSAL' Authentication Library. Please restart Visual Studio Code after changing this option. - - - Estimated Plan - - - Execute Current Statement - - - Execute Query - - - Explain Query - - - Familiarize yourself with more features of the MSSQL extension that can help you be more productive. - - - Filter - - - Filter your Object Explorer Tree - - - Get Started with MSSQL for Visual Studio Code - - - Getting Started Guide - - - MSSQL Copilot - - - MSSQL configuration - - - Make a new connection to a SQL database, or edit existing connections with the connection dialog. You can connect to a database by entering your connection information, using a connection string, or browsing your Azure subscriptions. [Open Connection Dialog](command:mssql.addObjectExplorer) - - - Manage Connection Profiles - - - Maximum number of characters to store for each value in XML columns after running a query. Default value: 2,097,152. Valid value range: 1 to 2,147,483,647. - - - Maximum number of characters/bytes to store for each value in character/binary columns after running a query. Default value: 65,535. Valid value range: 1 to 2,147,483,647. - - - Maximum number of old files to remove upon startup that have expired mssql.logRetentionMinutes. Files that do not get cleaned up due to this limitation get cleaned up next time Azure Data Studio starts up. - - - Maximum number of rows to return before the server stops processing your query. - - - Maximum size of text and ntext data returned from a SELECT statement - - - Modify Table Structure - - - New Deployment - - - New Query - - - New Query - - - New Table - - - Next Steps with MSSQL for Visual Studio Code - - - Number of minutes to retain log files for backend services. Default is 1 week. - - - Number of query history entries to show in the Query History view - - - Object Explorer filters - - - Only see the database objects that matter most to you by applying filters to the Object Explorer tree. Start by clicking the filter button next to most folders in the Connections view. - - - Open Execution Plan File - - - Open New Query and Connect - - - Open Query - - - Open Query History in Command Palette - - - Open in Copilot Agent mode - - - Open in Copilot Ask mode - - - Pause Query History Capture - - - Prevent automatic execution of scripts (e.g., 'Select Top 1000'). When enabled, scripts will not be automatically executed upon generation. - - - Prompts users to sign in using their browser. - - - Query History - - - Query Results - - - Query editor and query results pane - - - Query plan visualization - - - Refresh - - - Refresh IntelliSense Cache - - - Remove - - - Remove Microsoft Entra Account - - - Replication - - - Reveal Query Result - - - Rewrite Query - - - Run Query - - - Run a SQL Query - - - SQL Container Name - - - SQL Container Version - - - SQL Scripts - - - Schema Compare - - - Schema Designer - - - Script as Alter - - - Script as Create - - - Script as Drop - - - Script as Execute - - - Select Top 1000 - - - Selected Azure subscriptions for browsing and managing servers and databases - - - Send Feedback - - - Set the font family for the results grid; set to blank to use the editor font - - - Set the font size for the results grid; set to blank to use the editor size - - - Shortcuts related to the results window - - - Should BIT columns be displayed as numbers (1 or 0)? If false, BIT columns will be displayed as 'true' or 'false' - - - Should IntelliSense be enabled - - - Should IntelliSense error checking be enabled - - - Should IntelliSense quick info be enabled - - - Should IntelliSense suggestions be enabled - - - Should IntelliSense suggestions be lowercase - - - Should Personally Identifiable Information (PII) be logged in the Azure Logs output channel and the output channel log file. - - - Should Query History feature be enabled - - - Should column definitions be aligned? - - - Should data types be formatted as UPPERCASE, lowercase, or none (not formatted) - - - Should keywords be formatted as UPPERCASE, lowercase, or none (not formatted) - - - Should language service be auto-disabled when extension detects Non-MSSQL files - - - Should query result selections and scroll positions be saved when switching tabs (may impact performance) - - - Should references to objects in a select statements be split into separate lines? E.g. for 'SELECT C1, C2 FROM T1' both C1 and C2 will be on separate lines - - - Show the active SQL connection details as a CodeLens suggestion at the top of the editor for quick visibility. - - - Sort and Filter Query Results - - - Sort and filter options for query results - - - Sort and filter your query results to find the data you need quickly. - - - Sovereign cloud equivalent for `.database.fabric.microsoft.com` (including leading dot) - - - Sovereign cloud equivalent for `.database.windows.net` (including leading dot) - - - Sovereign cloud equivalent for `.datawarehouse.fabric.microsoft.com` (including leading dot) - - - Sovereign cloud equivalent for `.sql.azuresynapse.net` (including leading dot) - - - Sovereign cloud equivalent for `https://analysis.windows.net/powerbi/api/` - - - Sovereign cloud equivalent for `https://api.fabric.microsoft.com/v1/` - - - Sovereign cloud equivalent for `https://database.windows.net/` - - - Sovereign cloud equivalent for `https://vault.azure.net/` - - - Start Container - - - Start Query History Capture - - - Stop Container - - - Table Designer - - - Temporarily store passwords for connections with 'Saved Passwords' disabled, until the extension is restarted. This prevents repeated password prompts when reusing connections within the same session. - - - The additional, MSSQL-specific custom configuration for the Sovereign Cloud to use with the Microsoft Sovereign Cloud authentication provider. This along with setting `microsoft-sovereign-cloud.environment` to `custom` and providing values for `microsoft-sovereign-cloud.customEnvironment` is required to use this feature with MSSQL. - - - The color of the connection group. - - - The description of the connection group. - - - The maximum number of characters to display for the connection info in the status bar. Set to -1 for no limit. - - - The maximum number of recently used connections to store in the connection list. - - - The name of the connection group. - - - The timeout in seconds for expanding a node in Object Explorer. The default value is 45 seconds. - - - The unique identifier for the connection group this connection profile belongs to. - - - The unique identifier for the connection group. - - - The unique identifier for the parent connection group. - - - The unique identifier for this connection profile. - - - This setting will be removed in a future release. - - - Toggle SQLCMD Mode - - - True for the messages pane to be open by default; false for closed - - - Understand what your query is doing by viewing the query plan. See the estimated plan without running the query, or view the actual query plan after running the query by toggling the buttons at the top of a query editor window. - - - Use Database - - - View & Edit Data (Preview) - - - Visualize a Query Plan - - - When enabled, colorizes the connection status bar item with the color of the connection group. This setting is disabled by default. This uses the connection group folder's color directly, and does not alter it in order to ensure contrast with the current VS Code theme. Users should choose connection group colors that work well with their theme. - - - When enabled, connection groups will be collapsed instead of expanded at startup. - - - When enabled, the database objects in Object Explorer will be categorized by schema. - - - Windows Authentication - - - Write a SQL query, and run it against your database. You can also click the 'Open in New Tab' button to view your query results in their own tab, and optionally set that as the default behavior. - - - Your first steps for connecting to and developing with a SQL database - - - [Optional] Character used for enclosing text fields when saving results as CSV - - - [Optional] Character(s) used for separating rows when saving results as CSV - - - [Optional] Configuration options for copying multi-line results from the Results View - - - [Optional] Configuration options for copying results from the Results View - - - [Optional] Configuration options for which column new result panes should open in - - - [Optional] Declares the application workload type when connecting to SQL Server such as ReadWrite or ReadOnly. Refer to SQL Server AlwaysOn for more detail. - - - [Optional] Delimiter for separating data items when saving results as CSV. Choose from common separators like comma (,), tab (\t), semicolon (;), or pipe (|) - - - [Optional] Do not show unsupported platform warnings - - - [Optional] File encoding used when saving results as CSV. Choose from UTF-8 (recommended), UTF-16, ASCII, or Latin-1 based on your target application compatibility - - - [Optional] Indicates the SQL Server language settings. - - - [Optional] Indicates the name of local docker container the connection is on - - - [Optional] Indicates whether this profile has an empty password explicitly set - - - [Optional] Indicates which server type the provider will expose through the DataReader. - - - [Optional] Log debug output to the VS Code console (Help -> Toggle Developer Tools) - - - [Optional] Log level for backend services. Azure Data Studio generates a file name every time it starts and if the file already exists the logs entries are appended to that file. For cleanup of old log files see logRetentionMinutes and logFilesRemovalLimit settings. The default tracingLevel does not log much. Changing verbosity could lead to extensive logging and disk space requirements for the logs. Error includes Critical, Warning includes Error, Information includes Warning and Verbose includes Information - - - [Optional] Should execution time be shown for individual batches - - - [Optional] Specify a custom name for this connection profile to easily browse and search in the command palette of Visual Studio Code. - - - [Optional] Specify the SQL Server authentication type. - - - [Optional] Specify the database name to connect to. If database is not specified, the default user database setting is used, typically 'master'. - - - [Optional] Specify the delay between attempts to restore connection. - - - [Optional] Specify the length of time in seconds to wait for a command to execute before terminating the attempt and generating an error. The default value is 30 seconds. - - - [Optional] Specify the length of time in seconds to wait for a connection to the server before terminating connection attempt and generating an error. The default value is 30 seconds. - - - [Optional] Specify the maximum number of connections allowed in the pool. - - - [Optional] Specify the minimum amount of time in seconds for this connection to live in the pool before being removed/deleted. - - - [Optional] Specify the minimum number of connections allowed in the pool. - - - [Optional] Specify the name of the application used for SQL Server to log (default: 'vscode-mssql'). - - - [Optional] Specify the name of the primary file, including the full path name, of an attachable database. - - - [Optional] Specify the name of the workstation connecting to SQL Server. - - - [Optional] Specify the name or network address of the instance of SQL Server that acts as a failover partner. - - - [Optional] Specify the number of attempts to restore connection. - - - [Optional] Specify the password for SQL Server authentication. If password is not specified or already saved, when you connect, you will be asked again. - - - [Optional] Specify the port number to connect to. - - - [Optional] Specify the size in bytes of the network packets to communicate with SQL Server. - - - [Optional] Specify the user name for SQL Server authentication. If user name is not specified, when you connect, you will be asked again. - - - [Optional] The ADO.NET connection string to use for the connection. Overrides any other options given in this connection. - - - [Optional] Used by SQL Server in replication. - - - [Optional] When 'Mandatory' or 'Strict', SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed. When set to 'Strict', SQL Server uses TDS 8.0 for all data transfer between the client and server. 'Strict' is supported on SQL Server 2022 onwards. - - - [Optional] When set to 'true', multiple result sets can be returned and read from on connection. - - - [Optional] When set to 'true', the SQL Server SSL certificate is automatically trusted when the communication layer is encrypted using SSL. Set 'false' for Azure SQL Database connection. - - - [Optional] When set to 'true', the connection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool. Note: May keep serverless databases active and prevent auto-pausing. - - - [Optional] When set to 'true', the detection and connection to the active server is faster if AlwaysOn Availability Group is configured on different subnets. - - - [Optional] When set to 'true', the password for SQL Server authentication is saved in the secure store of your operating system such as KeyChain in MacOS or Secure Store in Windows. - - - [Optional] When set to false, security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state. - - - [Optional] When specified (and encrypt=Mandatory and trustServerCertificate=false), SQL Server uses provided hostname for validating trust with the server certificate. - - - [Optional] When true, column headers are included when saving results as CSV - - - [Required] Specify the server name to connect to. Use 'hostname instance' or '<server>.database.windows.net' for Azure SQL Database. - - - auth - - - database - - - port - - - server - - - should commas be placed at the beginning of each statement in a list e.g. ', mycolumn2' instead of at the end e.g. 'mycolumn1,' - - - user - - + + + + + is required. + + + $(plug) Connect to MSSQL + + + <Default> + + + <default> + + + (0 rows affected) + + + (1 row affected) + + + ({0} rows affected) + {0} is the number of rows affected + + + + Add Azure Account + + + + Add Fabric Account + + + + Create Connection Group + + + A SQL editor must have focus before executing this command + + + A firewall rule is required to access this server. + + + A highly integrated, developer-ready transactional database that auto-scales, auto-tunes, and mirrors data to OneLake for analytics across Fabric services + + + A predefined global default value for the column or binding. + + + A query is already running for this editor session. Please cancel this query or wait for its completion. + + + Accelerate schema evolution by autogenerating ORM migrations or T-SQL change scripts + + + Accept + + + Accept the SQL Server EULA to deploy a SQL Server Docker container + + + Access denied. Please ensure you have the necessary permissions to use this tool or model. + + + Access token expired for connection {0} with uri {1} + {0} is the connection id +{1} is the uri + + + Account + + + Account not found + + + Action + + + Actual Elapsed CPU Time + + + Actual Elapsed Time + + + Actual Number of Rows For All Executions + + + Add + + + Add Account + + + Add Column + + + Add Connection + + + Add Firewall Rule + + + Add Firewall Rule to {0} + {0} is the server name + + + Add Row + + + Add Server Connection + + + Add Table + + + Add a Microsoft Entra account... + + + Add account + + + Add my client IP ({0}) + {0} is the IP address of the client + + + Add new column + + + Add new foreign key + + + Additional parameters + + + Advanced + + + Advanced Connection Settings + + + Advanced Options + + + Advanced Publish Options + + + All permissions for extensions to access your connections have been cleared. + + + Allow Null + + + Allow Nulls + + + Allow this extension to access your connections + + + Alphabetical + + + Alter + + + Always Encrypted + + + Always show in new tab + + + An active connection is required for GitHub Copilot to understand your database schema and proceed. Select "{0}" to establish a connection. + {0} is the button text (e.g., 'Connect' or 'Open SQL editor and connect') + + + An error occurred refreshing nodes. See the MSSQL output channel for more details. + + + An error occurred while copying results: {0} + {0} is the error message + + + An error occurred while processing your request. + + + An error occurred while removing Microsoft Entra account: {0} + {0} is the error message + + + An error occurred while retrieving rows: {0} + {0} is the error message + + + An error occurred while searching database objects + + + An error occurred while searching database objects: {0} + {0} is the error detail returned from the search operation + + + An error occurred: {0} + {0} is the error message + + + An unexpected error occurred with the language model. Please try again. + + + An unknown error occurred. Please try again. + + + Analytics-ready by default + + + And + + + Application Intent + + + Apply + + + Apply changes to target + + + Apply contextual suggestions for SQL syntax, relationships, and constraints + + + Approve + + + Are you sure you want to delete the container {0}? This will remove both the container and its connection from VS Code. + {0} is the container name + + + Are you sure you want to delete the selected items? + + + Are you sure you want to delete {0}? + {0} is the group name + + + Are you sure you want to delete {0}? You can delete its connections as well, or move them to the root folder. + {0} is the group name + + + Are you sure you want to disconnect? + + + Are you sure you want to remove {0}? + {0} is the node label + + + Are you sure you want to update the target? + + + Are you sure you want to {0}? + {0} is the action being confirmed + + + Are you sure? + + + Authentication + + + Authentication Library has changed, please reload Visual Studio Code. + + + Authentication Type + + + Authentication error for account '{0}' (tenant '{1}'). Resolving this requires clearing your token cache, which will sign you out of all connected accounts. + {0} is the account display name +{1} is the tenant id + + + Authentication error for account. Resolving this requires clearing your token cache, which will sign you out of all connected accounts. + + + Authentication failed due to a nonce mismatch, please close Azure Data Studio and try again. + + + Authentication failed due to a state mismatch, please close ADS and try again. + + + Auto Arrange + + + Auto Arrange Confirmation + + + Auto Arrange will automatically reposition all diagram elements based on optimal layout algorithms. Any custom positioning you've created will be lost. Do you want to proceed with auto-arranging your schema diagram? + + + Automatic tuning features like automatic index creation enabled by default. + + + Available Servers + + + Average: {0} + {0} is the average + + + Average: {0} Count: {1} Sum: {2} + {0} is the average, {1} is the count, {2} is the sum + + + Azure (China) + + + Azure (Public) + + + Azure (US Government) + + + Azure Account + + + Azure Code Grant + + + Azure Device Code + + + Azure MFA + + + Azure sign in failed. + + + Azure: Sign In + + + Azure: Sign In to Azure Cloud + + + Azure: Sign In with Device Code + + + Back + + + Back to preview + + + Batch execution time: {0} + {0} is the batch time + + + Between + + + Blanks + + + Block this extension from accessing your connections + + + Brightness + + + Browse Azure + + + Browse By + + + Browse Fabric + + + CSV + + + Calling tool: {0} with {1}. + {0} is the tool function name +{1} is the SQL tool parameters + + + Cancel + + + Cancel failed: {0} + {0} is the error message + + + Cancel schema compare failed: '{0}' + {0} is the error message returned from the cancel operation + + + Canceled + + + Canceling + + + Canceling query + + + Canceling the query failed: {0} + {0} is the error message + + + Cannot cancel query as no query is running. + + + Cannot connect due to expired tokens. Please re-authenticate and try again. + + + Cannot create foreign key + + + Cannot exclude {0}. Included dependents exist + {0} is the name of the entry + + + Cannot exclude {0}. Included dependents exist, such as {1} + {0} is the name of the entry +{1} is the name of the blocking dependency preventing exclusion. + + + Cannot include {0}. Excluded dependents exist + {0} is the name of the entry + + + Cannot include {0}. Excluded dependents exist, such as {1} + {0} is the name of the entry +{1} is the name of the blocking dependency preventing inclusion. + + + Cascade + + + Change + + + Change Database + + + Change Password + + + Change database to '{1}' for connection '{0}'? + {0} is the connection ID +{1} is the database name + + + Changed Tables + + + Changed database context to "{0}" for document "{1}" + {0} is the database name +{1} is the document name + + + Changed database context to "{0}" on server "{1}" on document "{2}". + {0} is the database name +{1} is the server name +{2} is the document name + + + Changes published successfully + + + Changes saved successfully. + + + Changing database context to "{0}" on server "{1}" on document "{2}". + {0} is the database name +{1} is the server name +{2} is the document name + + + Changing database to '{1}' for connection '{0}' + {0} is the connection ID +{1} is the database name + + + Chat command not available in this VS Code version + + + Check Constraint + + + Check Constraints + + + Checking Docker Engine Configuration + + + Checking if Docker is installed + + + Checking if Docker is installed on your machine + + + Checking if Docker is running on your machine. If not, we'll start it for you. + + + Checking if Docker is started + + + Checking if the Docker Engine is configured correctly on your machine. + + + Checking pre-requisites + + + Choose An Action + + + Choose Query History + + + Choose SQL Language + + + Choose a Microsoft Entra account + + + Choose a Microsoft Entra tenant + + + Choose a connection profile from the list below + + + Choose a database from the list below + + + Choose a hostname for the container + + + Choose a name for the SQL Server Docker Container + + + Choose a port to host the SQL Server Docker Container + + + Choose an option to provision a database + + + Choose color + + + Choose the Right Version + + + Circular reference detected: '{0}' → '{1}' creates a cycle + {0} is source table +{1} is target table + + + Clear + + + Clear All + + + Clear Recent Connections List + + + Clear Selection + + + Clear Sort + + + Clear cache and refresh token + + + Clear permissions for all extensions to access your connections + + + Clear token cache + + + Click to cancel loading summary + + + Click to connect to a database + + + Click to load summary + + + Click to sign into an Azure account + + + Close + + + Close Designer + + + Close Find + + + Close Script Pane + + + Close properties pane + + + Close the current connection + + + Cloud + + + Collapse + + + Collapse All + + + Collapse Workspace Explorer + + + Color + + + Column + + + Column '{0}' already exists + {0} is the column name + + + Column '{0}' already has a foreign key + {0} is the column name + + + Column '{0}' cannot be null because it is a primary key + {0} is the column name + + + Column '{0}' is an identity column and cannot have a cascading foreign key + {0} is the column name + + + Column '{0}' must be a primary key + {0} is the referenced column + + + Column '{0}' not found + {0} is the column name + + + Column Name + + + Column max length cannot be empty + + + Column name cannot be empty + + + Column width must be at least {0} pixels. + {0} is the minimum column width in pixels + + + Columns + + + Columns in the primary key. + + + Command Timeout + + + Commands + + + Compare + + + Compare SQL Server editions + + + Comparison Details + + + Configure Linux containers + + + Configure Rosetta in Docker Desktop + + + Configure and customize SQL Server containers + + + Confirm Password + + + Confirm SQL Server admin password + + + Confirm new password + + + Confirm to clear recent connections list + + + Confirm to remove this profile. + + + Connect + + + Connect to Database + + + Connect to MSSQL + + + Connect to Server + + + Connect to a database + + + Connect to server {0} and database {1}? + {0} is the server name +{1} is the database name + + + Connect to server {0}? + {0} is the server name + + + Connect to {0} + {0} is the name of the connection profile + + + Connect using profile {0}? + {0} is the profile ID + + + Connected successfully + + + Connected to server "{0}" on document "{1}". Server information: {2} + {0} is the server name +{1} is the document name +{2} is the server info + + + Connected to: + + + Connecting + + + Connecting to Container + + + Connecting to Database + + + Connecting to server "{0}" on document "{1}". + {0} is the server name +{1} is the document name + + + Connecting to server {0} + {0} is the server name + + + Connecting to server {0} and database {1} + {0} is the server name +{1} is the database name + + + Connecting to your SQL Server Docker container + + + Connecting to {0}... + {0} is the connection display name + + + Connecting to: + + + Connecting using profile {0} + {0} is the profile ID + + + Connecting... + + + Connection Authentication + + + Connection Details + + + Connection Dialog + + + Connection Error + + + Connection Failed + + + Connection Group + + + Connection Profile could not be updated. Please modify the connection details manually in settings.json and try again. + + + Connection String + + + Connection Timeout + + + Connection error + + + Connection is not active. Please establish a connection before performing this action. + + + Connection not found for uri "{0}". + {0} is the uri + + + Connection profile '{0}' not found. + {0} is the profile ID + + + Connection sharing permission denied for extension: '{0}'. Use the permission management commands to change this. + {0} is the extension ID + + + Connection sharing permission is required for extension: '{0}' + {0} is the extension ID + + + Connection string is required + + + Connection with ID "{0}" not found. Please verify the connection ID exists. + {0} is the connection ID + + + Consider adding a name for this foreign key + + + Container Name + + + Container creation isn't supported on this system. ARM support will be available starting with the SQL Server 2025 CU1 container image. + + + Container does not exist. Would you like to remove the connection? + + + Container failed to start within the timeout period. Please wait a few minutes and try again. + + + Contains + + + Continue Editing + + + Copied + + + Copy + + + Copy As + + + Copy Headers + + + Copy Script + + + Copy Script to Clipboard + + + Copy as CSV + + + Copy as IN clause + + + Copy as INSERT INTO + + + Copy as JSON + + + Copy code and open webpage + + + Copy connection string to clipboard + + + Copy script + + + Copy with Headers + + + Copying results... + + + Cost + + + Count: {0} + {0} is the count + + + Count: {0} Distinct Count: {1} Null Count: {2} + {0} is the count, {1} is the distinct count, and {2} is the null count + + + Create + + + Create As Script + + + Create Connection Group + + + Create Connection Profile + + + Create Container + + + Create Database + + + Create Firewall Rule + + + Create Local SQL Container + + + Create New Connection Group + + + Create a Local Docker SQL Server + + + Create a SQL Server container in seconds—no manual steps required. Manage it easily from the MSSQL extension without leaving VS Code. + + + Create a SQL database in Fabric (Preview) + + + Create a new firewall rule + + + Create new firewall rule for {0} + {0} is the server name that the firewall rule will be created for + + + Creating Container + + + Creating SQL Database for workspace {0} + {0} is the workspace ID + + + Creating and starting your SQL Server container + + + Creating workspace with capacity {0} + {0} is the capacity ID + + + Credential Error: An error occurred while attempting to refresh account credentials. Please re-authenticate. + + + Currently signed in as: + + + Custom Zoom + + + DacFx service is not available. Profile loaded without deployment options. Publish and generate script operations cannot be performed. + + + DacFx service is not available. Publish and generate script operations cannot be performed. + + + Data Type + + + Data automatically replicated to OneLake in real time with a SQL analytics endpoint. + + + Data type mismatch: '{0}' in column '{1}' incompatible with '{2}' in '{3}' + {0} is source data type +{1} is source column +{2} is target data type +{3} is target column + + + Data-tier Application File (.dacpac) + + + Database + + + Database - {0} + {0} is the database name + + + Database Description + + + Database Name + + + Database Name is required + + + Database Project + + + Database changed successfully + + + Database list + + + Database name + + + Database name is required + + + Default + + + Default Value + + + Definition + + + DefinitionRequestCompleted + + + DefinitionRequested + + + Delete + + + Delete Confirmation + + + Delete Contents + + + Delete Row + + + Delete saved connection + + + Deleting Container... + + + Deny + + + Deployment Failed + + + Deployment Name + + + Deployment in progress + + + Description + + + Description for the table. + + + Details + + + Developer-friendly transactional database using the Azure SQL Database Engine. + + + Disable intellisense and syntax error checking on current document + + + Disabled + + + Discard + + + Disconnect + + + Disconnect from connection '{0}'? + {0} is the connection ID + + + Disconnected on document "{0}" + {0} is the document name + + + Disconnected successfully + + + Disconnecting from connection '{0}' + {0} is the connection ID + + + Dismiss + + + Displays the data type name for the column + + + Displays the description of the column + + + Displays the unified data type (including length, scale and precision) for the column + + + Dissatisfied + + + Distinct Count: {0} + {0} is the distinct count + + + Do you mind taking a quick feedback survey about the MSSQL Extension for VS Code? + + + Do you want to always display query results in a new tab instead of the query pane? + + + Docker failed to start within the timeout period. Please manually start Docker and try again. + + + Docker is not installed or not in PATH. Please install Docker Desktop and try again. + + + Docker requires root permissions to run. Please run Docker with sudo or add your user to the docker group using sudo usermod -aG docker $USER. Then, reboot your machine and retry. + + + Don't Show Again + + + Easily set up a local SQL Server without leaving VS Code extension. Just a few clicks to install, configure, and manage your server effortlessly! + + + Edit + + + Edit Connection Group - {0} + {0} is the connection group name + + + Edit Connection Group: {0} + {0} is the name of the connection group being edited + + + Edit Connection Profile + + + Edit Table + + + Either profileId or serverName must be provided. + + + Enable 'Trust Server Certificate' + + + Enable Experiences & Reload + + + Enable Trust Server Certificate + + + Enabled + + + Encountering a problem? Share the details with us by opening a GitHub issue so we can improve! + + + Encrypt + + + Encryption was enabled on this connection; review your SSL and certificate configuration for the target SQL Server, or enable 'Trust server certificate' in the connection dialog. + + + Encryption was enabled on this connection; review your SSL and certificate configuration for the target SQL Server, or set 'Trust server certificate' to 'true' in the settings file. Note: A self-signed certificate offers only limited protection and is not a recommended practice for production environments. Do you want to enable 'Trust server certificate' on this connection and retry? + + + End IP Address + + + Ends With + + + Enter Database Description + + + Enter Database Name + + + Enter connection group name + + + Enter container name + + + Enter description (optional) + + + Enter desired column width in pixels + + + Enter hostname + + + Enter new column width + + + Enter new password + + + Enter part of an object name to search for + + + Enter password + + + Enter port + + + Enter profile name + + + Entra token cache cleared successfully. + + + Equals + + + Error + + + Error Message: + + + Error code: + + + Error connecting to server "{0}". Details: {1} + {0} is the server name +{1} is the error message + + + Error connecting to: + + + Error creating firewall rule {0}. Check your Azure account settings and try again. Error: {1} + {0} is the rule info in format 'name (startIp - endIp)' +{1} is the error message + + + Error generating text view. Please try switching back to grid view. + + + Error loading Azure account information for tenant ID '{0}' + {0} is the tenant ID + + + Error loading Azure databases for subscription {0} ({1}). Confirm that you have permission. + {0} is the subscription name +{1} is the subscription id + + + Error loading Azure databases. + + + Error loading Azure subscriptions. + + + Error loading databases + + + Error loading designer + + + Error loading preview + + + Error loading summary + + + Error loading summary: {0} + {0} is the error message + + + Error loading workspaces + + + Error loading workspaces. Please try choosing a different account or tenant. + + + Error loading; refresh to try again + + + Error migrating connection ID {0} to new format. Please recreate this connection to use it. Error: {1} + {0} is the connection id +{1} is the error message + + + Error occurred opening content in editor. + + + Error retrieving server list: {0} + {0} is the error message + + + Error running Docker commands. Please make sure Docker is running. + + + Error signing into Azure: {0} + {0} is the error message + + + Error when refreshing token + + + Error {0}: {1} + {0} is the error number +{1} is the error message + + + Error {0}: {1} Please login as a different user and change the password using ALTER LOGIN. + {0} is the error number +{1} is the error message + + + Error: + + + Error: Login failed. Retry using different credentials? + + + Error: Unable to connect using the connection information provided. Retry profile creation? + + + Excel + + + Exclude Object Types + + + Execute + + + Executing query... + + + Execution Plan + + + Existing Azure SQL logical server + + + Existing SQL server + + + Expand + + + Expand All + + + Expand Workspace Explorer + + + Expand properties pane + + + Explore, design, and evolve database schemas using intelligent, code-first or data-first guidance + + + Explorer + + + Export + + + Expression + + + Extremely likely + + + Fabric API error occurred ({0}): {1} + {0} is the error code +{1} is the error message + + + Fabric Account + + + Fabric Account is required + + + Fabric Workspaces + + + Fabric is not supported in the current cloud ({0}). Ensure setting '{1}' is configured correctly. + {0} is the cloud name +{1} is the setting name + + + Fabric long-running API error with error code '{0}': {1} + {0} is the error code +{1} is the error message + + + Failed + + + Failed disposing query: {0} + {0} is the error message + + + Failed to apply changes: '{0}' + {0} is the error message returned from the publish changes operation + + + Failed to change database + + + Failed to connect + + + Failed to connect to database: {0} + {0} is the database name + + + Failed to connect to server. + + + Failed to connect: {0} + {0} is the error message + + + Failed to copy script: {0} + {0} is the error message + + + Failed to create a new row: {0} + {0} is the error message + + + Failed to delete credential with id: {0}. {1} + {0} is the id +{1} is the error + + + Failed to delete {0}. + Failed to delete {0}. + + + Failed to establish connection with ID "{0}". Please check connection details and network connectivity. + {0} is the connection ID + + + Failed to fetch user tokens. + + + Failed to generate publish script: '{0}' + {0} is the error message returned from the generate script operation + + + Failed to generate script: '{0}' + {0} is the error message returned from the generate script operation + + + Failed to generate script: {0} + {0} is the error message + + + Failed to get Fabric workspaces for tenant '{0} ({1})'. + {0} is the tenant name +{1} is the tenant id + + + Failed to get Fabric workspaces for tenant '{0} ({1})': {2} + {0} is the tenant name +{1} is the tenant id +{2} is the error message + + + Failed to get authentication method, please remove and re-add the account. + + + Failed to get tenant '{0}' for account '{1}'. + {0} is the tenant id +{1} is the account name + + + Failed to list databases + + + Failed to load data: {0} + {0} is the error message + + + Failed to load publish profile + + + Failed to open scmp file: '{0}' + {0} is the error message returned from the open scmp operation + + + Failed to open script: {0} + {0} is the error message + + + Failed to pull SQL Server image. Please check your network connection and try again. + + + Failed to refresh connection ${0} with uri {1}, invalid connection result. + {0} is the connection id +{1} is the uri + + + Failed to remove row: {0} + {0} is the error message + + + Failed to revert cell: {0} + {0} is the error message + + + Failed to revert row: {0} + {0} is the error message + + + Failed to save changes: {0} + {0} is the error message + + + Failed to save publish profile + + + Failed to save results. + + + Failed to save scmp file: '{0}' + {0} is the error message returned from the save scmp operation + + + Failed to start SQL Server container. Please check the error message for more details, and then try again. + + + Failed to start query. + + + Failed to start {0}. + Failed to start {0}. + + + Failed to stop {0}. + Failed to stop {0}. + + + Failed to update cell: {0} + {0} is the error message + + + Favorites + + + Fetch rows + + + Fetching {0} script... + {0} is the script type + + + File + + + Filter + + + Filter ({0}) + {0} is the number of selected tables + + + Filter Azure subscriptions + + + Filter Options + + + Filter Settings + + + Filter by keyword + + + Filter by type + + + Filter for any field... + + + Find + + + Find Next + + + Find Node + + + Find Nodes + + + Find Previous + + + Finish + + + Finished Deployment + + + Finished query execution for document "{0}" + {0} is the document name + + + Firewall rule name + + + Firewall rule successfully added. Retry profile creation? + + + Firewall rule successfully created. + + + First Page + + + Flat + + + Folder Structure + + + For numeric data, the maximum number of decimal digits that can be stored in this database object to the right of decimal point. + + + For numeric data, the maximum number of decimal digits that can be stored in this database object. + + + Foreign Column + + + Foreign Key + + + Foreign Key {0} + {0} is the index of the foreign key + + + Foreign Keys + + + Foreign Table + + + Foreign key '{0}' already exists + {0} is the foreign key name + + + Formula + + + Found pending reconnect promise for uri {0}, failed. + {0} is the uri + + + Found pending reconnect promise for uri {0}, waiting. + {0} is the uri + + + Found {0} saved connection profile(s). + {0} is the number of connection profiles + + + General + + + General Options + + + Generate Script + + + Generate mock data and seed scripts to support testing and development environments + + + Generate script to deploy changes to target + + + Generating Report. This may take a while... + + + Generating report, this might take a while... + + + Get Connection Details + + + Get Started + + + Get connection details for connection '{0}'? + {0} is the connection ID + + + Get security-related recommendations, such as avoiding SQL injection or excessive permissions + + + Getting Docker Ready... + + + Getting Fabric database '{0}' + {0} is the database ID + + + Getting Fabric workspace '{0}' + {0} is the workspace ID + + + Getting connection details for connection '{0}' + {0} is the connection ID + + + Getting connection string for SQL Endpoint '{0}' in workspace '{1}' + {0} is the SQL endpoint ID +{1} is the workspace ID + + + Getting container ready for connections + + + Getting definition ... + + + Got invalid tool use parameters: "{0}". ({1}) + {0} is the part input +{1} is the error message + + + Greater Than + + + Greater Than or Equals + + + Grid View + + + Help + + + Hide Confirm Password + + + Hide New Password + + + Hide Script + + + Hide full error message + + + Hide password + + + Hide this panel + + + Highlight Expensive Operation + + + Hostname + + + How likely it is that you would recommend the MSSQL extension to a friend or colleague? + + + How likely it is that you would recommend {0} to a friend or colleague? + {0} is the feature name + + + How many tables are in this database? + + + Hue + + + I have read the summary and understand the potential risks. + + + I'm sorry, I can only assist with SQL-related questions. + + + Ignore Options + + + Ignore Tenant + + + Image tag + + + Importance + + + In progress + + + Include + + + Include Object Types + + + Include all object types + + + Index + + + Indexes + + + Initializing comparison, this might take a while... + + + Insert + + + Install Docker + + + Instant Container Setup + + + Insufficient Workspace Permissions + + + Integrated + + + Integrated & secure + + + Invalid Firewall rule name + + + Invalid IP Address + + + Invalid SQL Server password for {0}. Password must be 8–128 characters long and meet the complexity requirements. For more information see https://docs.microsoft.com/sql/relational-databases/security/password-policy + + + Invalid column width + + + Invalid connection URI provided. + + + Invalid connection URI. Please ensure you have an active database connection. + + + Invalid connection string: {0} + + + Invalid max length '{0}' + {0} is the max length + + + Is Computed + + + Is Identity + + + Is Persisted + + + Issues ({0}) + {0} is the number of issues + + + JPEG + + + JSON + + + Keep in query pane + + + Keys for token cache could not be saved in credential store, this may cause Microsoft Entra Id access token persistence issues and connection instabilities. It's likely that SqlTools has reached credential storage limit on Windows, please clear at least 2 credentials that start with "Microsoft.SqlTools|" in Windows Credential Manager and reload. + + + Last Page + + + Learn More + + + Learn more about SQL Server 2025 features + + + Length + + + Length mismatch: Column '{0}' ({1}) incompatible with '{2}' ({3}) + {0} is source column +{1} is source length +{2} is target column +{3} is target length + + + Less Than + + + Less Than or Equals + + + Line {0} + {0} is the line number + + + List Connections + + + List Databases + + + List Functions + + + List Schemas + + + List Tables + + + List Views + + + List all connections registered with the mssql extension? + + + List databases for connection '{0}'? + {0} is the connection ID + + + List functions for connection '{0}'? + {0} is the connection ID + + + List schemas for connection '{0}'? + {0} is the connection ID + + + List tables for connection '{0}'? + {0} is the connection ID + + + List views for connection '{0}'? + {0} is the connection ID + + + Listing Fabric SQL Databases for workspace '{0}' + {0} is the workspace ID + + + Listing Fabric SQL Endpoints for workspace '{0}' + {0} is the workspace ID + + + Listing Fabric capacities for tenant '{0}' + {0} is the tenant ID + + + Listing Fabric workspaces for tenant '{0}' + {0} is the tenant ID + + + Listing databases for connection '{0}' + {0} is the connection ID + + + Listing functions for connection '{0}' + {0} is the connection ID + + + Listing role assignments for workspace '${workspaceId}' + {0} is the workspace ID + + + Listing schemas for connection '{0}' + {0} is the connection ID + + + Listing server connections + + + Listing tables for connection '{0}' + {0} is the connection ID + + + Listing views for connection '{0}' + {0} is the connection ID + + + Load + + + Load from Connection String + + + Load profile... + + + Load source, target, and options saved in an .scmp file + + + Loading + + + Loading Azure Accounts + + + Loading Fabric Accounts + + + Loading Report + + + Loading Schema Designer + + + Loading Schema Designer Model... + + + Loading Table Designer + + + Loading databases in '{0}'... + {0} is the name of the workspace + + + Loading databases in selected workspace... + + + Loading deployment + + + Loading execution plan... + + + Loading fabric provisioning... + + + Loading local containers... + + + Loading results... + + + Loading summary for {0} rows (Click to cancel) + {0} is the total number of rows + + + Loading table data... + + + Loading tenants... + + + Loading text view... + + + Loading workspaces + + + Loading workspaces... + + + Loading... + + + Local SQL Server database container + + + Local development container + + + Location + + + Location (Workspace) + + + MSSQL + + + MSSQL - Azure Auth Logs + + + MSSQL Feedback + + + Manage Connection Profiles + + + Manage relationships + + + Mandatory (Recommended) + + + Mandatory (True) + + + Max Length + + + Max row count for filtering/sorting has been exceeded. To update it, navigate to User Settings and change the setting: mssql.resultsGrid.inMemoryDataProcessingThreshold + + + Max: {0} + {0} is the max + + + Maximize + + + Maximize Panel Size + + + Maximize panel size + + + Message + + + Messages + + + Metric + + + Microsoft Account + + + Microsoft Account is required + + + Microsoft Corp + + + Microsoft Entra Account + + + Microsoft Entra Id + + + Microsoft Entra Id - Universal w/ MFA Support + + + Microsoft Entra account {0} successfully added. + {0} is the account name + + + Microsoft SQL Server License Agreement + + + Microsoft reviews your feedback to improve our products, so don't share any personal data or confidential/proprietary content. + + + Microsoft will process the feedback you submit pursuant to your organization’s instructions in order to improve your and your organization’s experience with this product. If you have any questions about the use of feedback data, please contact your tenant administrator. Processing of feedback data is governed by the Microsoft Products and Services Data Protection Addendum between your organization and Microsoft, and the feedback you submit is considered Personal Data under that addendum. + + + Microsoft will process the feedback you submit pursuant to your organization’s instructions in order to improve your and your organization’s experience with this product. If you have any questions... + + + Microsoft would like your feedback + + + Min: {0} + {0} is the min + + + Move Down + + + Move Up + + + Move to Root + + + My Data + + + NULL + + + Name + + + Name of the primary key. + + + New Azure SQL logical server (Preview) + + + New Check Constraint + + + New Column + + + New Column Mapping + + + New Deployment + + + New Foreign Key + + + New Index + + + New Microsoft Entra account could not be added. + + + New Password + + + New SQL Server local development container + + + New SQL database + + + New column mapping + + + Next + + + Next Page + + + No + + + No Action + + + No Microsoft Entra account can be found for removal. + + + No Queries Available + + + No account selected + + + No active connection + + + No active connection for database change + + + No active connection for schema view + + + No active database connection in the current editor. Please establish a connection to continue. + + + No active database connection. Please connect to a database first. + + + No active text editor found. Please open a file with an active database connection. + + + No changes detected + + + No connection credentials found + + + No connection found for connectionId: {0} + {0} is the connection ID + + + No connection information found + + + No connection profile to remove. + + + No connection was found. Please connect to a server first. + + + No data available + + + No database objects found matching '{0}' + {0} is the search term + + + No databases found in the selected workspace. + + + No databases found in workspace '{0}'. + {0} is the name of the workspace + + + No items + + + No model found. + + + No need to refresh Microsoft Entra acccount token for connection {0} with uri {1} + {0} is the connection id +{1} is the uri + + + No pending changes. Make edits to generate a script. + + + No results + + + No results for the active editor + + + No results to display + + + No saved connection profiles found. + + + No schema differences were found. + + + No script available. Make changes to the table data and generate a script first. + + + No subscriptions available. Adjust your subscription filters to try again. + + + No tenant selected + + + No tools to process. + + + No workspaces found + + + No workspaces found. Please change Fabric account or tenant to view available workspaces. + + + Non-SQL Server SQL file detected. Disable IntelliSense for such files? + + + None + + + Not Between + + + Not Contains + + + Not Ends With + + + Not Equals + + + Not Starts With + + + Not likely at all + + + Not signed in + + + Not started + + + Note: A self-signed certificate offers only limited protection and is not a recommended practice for production environments. Do you want to enable 'Trust server certificate' on this connection and retry? + + + Null Count: {0} + {0} is the null count + + + Number of Rows Read + + + OK + + + OLTP, built on Azure SQL + + + Object Explorer Filter + + + Object Type + + + Off + + + On Delete + + + On Delete Action + + + On Update + + + On Update Action + + + Open + + + Open .scmp file + + + Open Publish Script + + + Open Query + + + Open Query History + + + Open SQL editor and connect + + + Open XML + + + Open in Editor + + + Open in New Tab + + + Open in SQL Editor + + + Open in editor + + + Opening Publish Script. This may take a while... + + + Opening schema designer... + + + Operator + + + Option Description + + + Optional (False) + + + Options + + + Options have changed. Recompare to see the comparison? + + + Overall, how satisfied are you with the MSSQL extension? + + + Overall, how satisfied are you with {0}? + {0} is the feature name + + + PNG + + + Parameters + + + Parent node was not TreeNodeInfo. + + + Password + + + Password (SQL Login) + + + Password is required + + + Password must be changed for '{0}' to continue logging into '{1}' + {0} is the username +{1} is the name of the server + + + Password must be changed to continue logging into '{0}' + {0} is the name of the server + + + Passwords do not match + + + Paste + + + Paste connection string from clipboard + + + Path: {0} + {0} is the path of the node in the object explorer + + + Pick from multiple SQL Server versions, including SQL Server 2025 (Preview) with built-in AI capabilities like vector search and JSON enhancements. + + + Please Accept the SQL Server EULA + + + Please choose a unique name for the container + + + Please choose a unique name for the profile + + + Please make sure the port is a number, and choose a port that is not in use + + + Please make your password 8-128 characters long. + + + Please select a workspace where you have sufficient permissions (Contributor or higher) + + + Port + + + Port must be a number between 1 and 65535 + + + Possible Data Loss detected. Please review the changes. + + + Precision + + + Precision/scale mismatch between '{0}' and '{1}' + {0} is source column +{1} is target column + + + Preview Database Updates + + + Previous + + + Previous Page + + + Previous pending reconnect promise for uri {0} is rejected with error {1}, will attempt to reconnect if necessary. + {0} is the uri +{1} is the error + + + Previous pending reconnection for uri {0}, succeeded. + {0} is the uri + + + Previous step failed. Please check the error message and try again. + + + Primary Key + + + Primary Key Columns + + + Privacy Statement + + + Processing include or exclude all differences operation. + + + Profile Name + + + Profile created and connected + + + Profile created successfully + + + Profile removed successfully + + + Properties + + + Property + + + Provider '{0}' does not have a Microsoft resource endpoint defined. + {0} is the provider + + + Provisioning + + + Publish + + + Publish Changes + + + Publish Profile + + + Publish Project + + + Publish Settings File + + + Publish Target + + + Publish profile saved to: {0} + + + Publishing Changes + + + Pulling SQL Server Image + + + Pulling the SQL Server container image. This might take a few minutes depending on your internet connection. + + + Query Plan ({0}) + {0} is the number of query plans + + + Query executed + + + Query failed + + + Query succeeded + + + Query {0}: Query cost (relative to the script): {1}% + {0} is the query number +{1} is the query cost + + + Read more + + + Readying container for connections. + + + Readying container for connections... + + + Receive natural language explanations to help developers unfamiliar with T-SQL understand code + + + Recent + + + Recent Connections + + + Recent connections list cleared + + + Redo + + + Referenced column '{0}' not found + {0} is the column name + + + Referenced table '{0}' not found + {0} is the table name + + + Refresh + + + Refresh Credentials + + + Reload Visual Studio Code + + + Remind Me Later + + + Remove + + + Remove Sort + + + Remove recent connection + + + Remove {0} + {0} is the object type + + + Replication + + + Required + + + Reset + + + Resize + + + Resize column '{0}' + {0} is the name of the column + + + Resource Group + + + Restore + + + Restore Panel Size + + + Restore panel size + + + Restore properties pane + + + Result Set {0} + {0} is the index of the result set + + + Results + + + Results ({0}) + {0} is the number of results + + + Results copied to clipboard + + + Retry + + + Reverse Alphabetical + + + Reverse-engineer existing databases by explaining SQL schemas and relationships + + + Revert Cell + + + Revert Row + + + Rosetta is required to run SQL Server container images on Apple Silicon. Enable "Use Rosetta for x86_64/amd64 emulation on Apple Silicon" in Docker Desktop > Settings > General. + + + Row created. + + + Row removed. + + + Rows per page + + + Rule name + + + Run Query + + + Run Query History + + + Run a query in the current editor, or switch to an editor that has results. + + + Run query on connection '{0}'? Query: {1} + {0} is the connection ID +{1} is the SQL query + + + Running query is not supported when the editor is in multiple selection mode. + + + Running query on connection '{0}' + {0} is the connection ID + + + SQL Analytics Endpoint + + + SQL Container Name + + + SQL Container Version + + + SQL Database + + + SQL Login + + + SQL Plan Files + + + SQL Server 2025 is not supported on ARM architecture. Please select a different SQL Server version. + + + SQL Server 2025 is not yet supported on ARM architecture. ARM support will be available starting with the SQL Server 2025 CU1 container image. + + + SQL Server Container SA Password + + + SQL Server admin password + + + SQL Server does not support Windows containers. Please switch to Linux containers in Docker Desktop settings. + + + SQL Server port number + + + SQL Server {0} - latest + {0} is the SQL Server version + + + SQL database in Fabric (Preview) + + + SQLCMD Variables + + + SVG + + + Satisfied + + + Saturation + + + Save + + + Save .scmp file + + + Save As + + + Save As... + + + Save Changes + + + Save Connection Group + + + Save Password + + + Save Password? If 'No', password will be required each time you connect + + + Save Plan + + + Save as CSV + + + Save as Excel + + + Save as INSERT + + + Save as JSON + + + Save results command cannot be used with multiple selections. + + + Save source and target, options, and excluded elements + + + Saved Connections + + + Scaffold backend components (e.g., data-access layers) based on your current database context + + + Scale + + + Scale mismatch between '{0}' and '{1}' + {0} is source column +{1} is target column + + + Schema + + + Schema Compare + + + Schema Compare Options + + + Schema Compare failed: '{0}' + {0} is the error message returned from the compare operation + + + Schema Designer + + + Schema Designer Model is ready. Changes can now be published. + + + Schema visualization opened. + + + Schema/Object Type + + + Script + + + Script As Create + + + Script copied to clipboard + + + Script copied to clipboard. + + + Search Workspaces + + + Search connection groups + + + Search for database objects... + + + Search options... + + + Search settings... + + + Search tables... + + + Search term cannot be empty + + + Search workspaces... + + + Search... + + + See + + + Select + + + Select All + + + Select Azure account with Key Vault access for column decryption + + + Select Connection + + + Select Profile + + + Select Source + + + Select Source Schema + + + Select Target + + + Select Target Schema + + + Select a Workspace + + + Select a connection group + + + Select a tenant + + + Select a valid {0} from the dropdown + {0} is the type of the dropdown's contents, e.g 'resource group' or 'server' + + + Select a workspace to view the databases in it. + + + Select a {0} for filtering + {0} is the type of the dropdown's contents, e.g 'resource group' or 'server' + + + Select all + + + Select all options + + + Select an account + + + Select an extension to manage connection sharing permissions + + + Select an object to view its definition ({0} results) + {0} is the number of results + + + Select image + + + Select new permission for extension: '{0}' + {0} is the extension name + + + Select profile to remove + + + Select subscriptions + + + Select the SQL Server Container Image + + + Selected Microsoft Entra account removed successfully. + + + Server + + + Server - {0} + {0} is the server name + + + Server Edition + + + Server Version + + + Server connection in progress. Do you want to cancel? + + + Server could not start. This could be a permissions error or an incompatibility on your system. You can try enabling device code authentication from settings. + + + Server is required + + + Server name not set. + + + Server name or ADO.NET connection string + + + Server {0} not found. + {0} is the server name + + + Set Default + + + Set Null + + + Setting up + + + Setting up container + + + Settings + + + Severity + + + Show All + + + Show Confirm Password + + + Show MSSQL output + + + Show Menu (F3) + + + Show New Password + + + Show Schema + + + Show Script + + + Show a random table definition + + + Show full error message + + + Show password + + + Show schema for connection '{0}'? + {0} is the connection ID + + + Show table relationships + + + Showing schema for connection '{0}' + {0} is the connection ID + + + Showplan XML + + + Sign In + + + Sign in + + + Sign in to a new account + + + Sign in to your Azure subscription + + + Sign in to your Azure subscription in one of the sovereign clouds. + + + Sign in to your Azure subscription with a device code. Use this in setups where the Sign In command does not work + + + Sign into Azure + + + Sign into Azure in order to add a firewall rule. + + + Sign into Fabric + + + Signing in to Azure... + + + Simple Container Management + + + Smart performance + + + Sort + + + Sort Ascending + + + Sort Descending + + + Source + + + Source Column + + + Source Name + + + Specifies whether the column is included in the primary key for the table. + + + Specifies whether the column may have a NULL value. + + + Start IP Address + + + Start Time + + + Start, stop, and remove containers directly from the extension. + + + Started executing query at + + + Started query execution for document "{0}" + {0} is the document name + + + Started saving results to + + + Starting Container... + + + Starting Docker... + + + Starting {0}... + {0} is the container name + + + Starts With + + + Stop + + + Stopping Container... + + + Submit + + + Submit an issue + + + Subscription + + + Subtree Cost + + + Succeeded + + + Succeeded with warning + + + Successfully changed to database: {0} + {0} is the database name + + + Successfully connected to server. + + + Successfully refreshed token for connection {0} with uri {1}, {2} + {0} is the connection id +{1} is the uri +{2} is the message + + + Successfully saved results to + + + Sum: {0} + {0} is the sum + + + Summary loading canceled + + + Summary loading was canceled by user + + + Switch Direction + + + Switch Source and Target + + + Switch to Grid View + + + Switch to MSAL + + + Switch to Text View + + + Switching to Linux containers was canceled. SQL Server only supports Linux containers. + + + Table + + + Table '{0}' already exists + {0} is the table name + + + Table '{0}' not found + {0} is the table name + + + Table Explorer for '{0}' has unsaved changes. Do you want to save or discard them? + {0} is the table name + + + Table Explorer: {0} (Preview) + {0} is the table name + + + Table name + + + Table name cannot be empty + + + Take Survey + + + Target + + + Target Name + + + Target Table + + + Tenant + + + Tenant ID + + + Tenant ID is required + + + Terms & Conditions + + + Test Connection + + + Testing connection profile... + + + Text View + + + The MSSQL for VS Code extension is introducing new modern data development features! Would you like to enable them? [Learn more]({0}) + {0} is a url to learn more about the new features + + + The SQL Server 2025 RTM container image isn't compatible with ARM-based systems (including Windows ARM and Apple Silicon). + + + The behavior when a user tries to delete a row with data that is involved in a foreign key relationship. + + + The behavior when a user tries to update a row with data that is involved in a foreign key relationship. + + + The columns of the index. + + + The connection with ID '{0}' does not have the 'server' property set and is being ignored. Please set the 'server' property on this connection in order to use it. + {0} is the connection ID for the connection that has been ignored + + + The custom cloud choice is not configured. Please configure the setting `{0}`. + + + The description of the check constraint. + + + The description of the foreign key. + + + The description of the index. + + + The description of the primary key. + + + The expression defining the check constraint. + + + The extension '{0}' is requesting access to your SQL Server connections. This will allow it to execute queries and access your database. + {0} is the extension name + + + The first value must be less than the second value for the {0} operator in the {1} filter + {0} is the operator for the filter +{1} is the name of the filter + + + The first value must be set for the {0} operator in the {1} filter + {0} is the operator for the filter +{1} is the name of the filter + + + The following workspace or workspace folder connections are missing the 'id' property and are being ignored. Please manually add the 'id' property to the connection in order to use it. {0} + {0} is the list of display names for the connections that have been ignored + + + The language model did not return any output. + + + The mapping between foreign key columns and primary key columns. + + + The maximum length (in characters) that can be stored in this database object. + + + The name of the check constraint. + + + The name of the column object. + + + The name of the column. + + + The name of the foreign key. + + + The name of the index. + + + The recent connections list has been cleared but there were errors while deleting some associated credentials. View the errors in the MSSQL output channel. + + + The requested model could not be found. Please check model availability or try a different model. + + + The second value must be set for the {0} operator in the {1} filter + {0} is the operator for the filter +{1} is the name of the filter + + + The table which contains the primary or unique key column. + + + There was an error updating the project + + + This database name is already in use. Please choose a different name. + + + This message couldn't be processed. If this issue persists, please check the logs and open an issue on GitHub. + + + Timestamp + + + To compare two schemas, first select a source schema and target schema, then press compare. + + + To use this command, Open a .sql file -or- Change editor language to "SQL" -or- Select T-SQL text in the active SQL editor. + + + To use this command, you must set the language to "SQL". Confirm to change language mode. + + + Toggle Tooltips + + + Tool lookup for: {0} - {1}. + {0} is the part name +{1} is the part input + + + Total execution time: {0} + {0} is the elapsed time + + + Total rows to fetch: + + + Type + + + Unable to execute the command while the extension is initializing. Please try again later. + + + Unable to expand. Please check logs for more information. + + + Unable to open Table Explorer: No target node provided. + + + Unable to read proxy agent options to get tenants. + + + Understand and document business logic embedded in stored procedures, views, and functions + + + Undo + + + Unknown error + + + Unnamed Profile + + + Unsupported architecture for Docker: {0} + {0} is the architecture name of the machine + + + Unsupported platform for Docker: {0} + {0} is the platform name of the machine + + + Update + + + Update Database + + + Update Script + + + Updating IntelliSense... + + + Usage limits exceeded. Try again later, or consider optimizing your requests. + + + Use T-SQL intellisense and syntax error checking on current document + + + Use {0} to create a new connection. + {0} is the connect command + + + User + + + User name + + + User name (SQL Login) + + + User name is required + + + Username + + + Using {0} ({1})... + {0} is the model name +{1} is whether the model can send requests + + + Using {0} to process your request... + {0} is the model name that will be processing the request + + + Value + + + Very Dissatisfied + + + Very Satisfied + + + View More + + + View mssql for Visual Studio Code release notes? + + + Visual Studio Code must be relaunched for this setting to come into effect. Please reload Visual Studio Code. + + + Warning + + + Warnings detected. Please review the changes. + + + We can't find where Docker Desktop is located on your machine. Please manually start Docker Desktop and try again. + + + We couldn't connect using the current connection information. Would you like to retry the connection or edit the connection profile? + + + What I can do for you: + + + What can we do to improve? + + + Width cannot be 0 or negative + + + Windows Authentication + + + Works with VS Code/SSMS and uses Microsoft Entra authentication and Fabric access controls. + + + Workspace + + + Workspace is required + + + Write, optimize, and troubleshoot SQL queries with AI-recommended improvements + + + Yes + + + You are not connected to any database. + + + You must accept the license + + + You must be signed into Azure in order to browse SQL databases. + + + You must be signed into Fabric in order to browse SQL databases. + + + You must review and accept the terms to proceed + + + Your Docker Engine currently runs Windows containers. SQL Server only supports Linux containers. Would you like to switch to Linux containers? + + + Your account needs re-authentication to access {0} resources. Press Open to start the authentication process. + {0} is the resource + + + Your client IP Address '{0}' does not have access to the server '{1}' you're attempting to connect to. Would you like to create new firewall rule? + {0} is the client IP address +{1} is the server name + + + Your client IP address does not have access to the server. Add a Microsoft Entra account and create a new firewall rule to enable access. + + + Your password must contain characters from at least three of the following categories: uppercase letters, lowercase letters, numbers (0-9), and special characters (!, $, #, %, etc.). + + + Your tenant '{0} ({1})' requires you to re-authenticate again to access {2} resources. Press Open to start the authentication process. + {0} is the tenant name +{1} is the tenant id +{2} is the resource + + + Zoom In + + + Zoom Out + + + Zoom to Fit + + + [Optional] Database to connect (press Enter to connect to <default> database) + + + [Optional] Enter a display name for this connection profile + + + authenticationType + + + database + + + default + + + delete the saved connection: {0}? + {0} is the connection name + + + encrypt + + + for more details + + + hostname\instance or <server>.database.windows.net or ADO.NET connection string + + + intelliSenseUpdated + + + location + + + macOS Sierra or newer is required to use this feature. + + + resource group + + + server + + + subscription + + + test + + + untitled + + + updatingIntelliSense + + + {0} (Current Account) + {0} is the account display name + + + {0} (filtered) + + + {0} accounts + {0} is the number of accounts + + + {0} column data + {0} is the number of columns + + + {0} deleted successfully. + {0} deleted successfully. + + + {0} errors + {0} is the number of errors + + + {0} has been closed. Would you like to restore it? + {0} is the webview name + + + {0} invalid Entra accounts have been removed; you may need to run `MS SQL: Clear Microsoft Entra account token cache` and log in again. + {0} is the number of invalid accounts that have been removed + + + {0} issue + {0} is the number of issues + + + {0} issues + {0} is the number of issues + + + {0} of {1} + {0} is the number of active elements +{1} is the total number of elements + + + {0} password doesn't match the confirmation password + + + {0} properties + {0} is the object type + + + {0} rows selected, click to load summary + {0} is the number of rows to fetch summary statistics for + + + {0} selected + {0} is the number of selected rows + + + {0} started successfully. + {0} started successfully. + + + {0} stopped successfully. + {0} stopped successfully. + + + {0} warnings + {0} is the number of warnings + + + {0} {1} issue + {0} is the tab name +{1} is the number of issues + + + {0} {1} issues + {0} is the tab name +{1} is the number of issues + + + {0}. {1} + {0} is the status +{1} is the message + + + {0}: {1} + {0} is the task name +{1} is the status + + + {0}: {1}. {2} + {0} is the task name +{1} is the status +{2} is the message + + + {{put-server-name-here}} + + + ✅ Grant Access + + + ✅ Grant Access (Current) + + + ❌ Deny Access + + + ❌ Deny Access (Current) + + + 👋 I'm GitHub Copilot for MSSQL extension, your intelligent SQL development assistant in Visual Studio Code. I help you connect, explore, design, and evolve your SQL databases directly from VS Code. + + + + + Add Connection + + + Add Connection Group + + + Add Microsoft Entra Account + + + Allows users to sign in to input-constrained devices. + + + Always Encrypted + + + An execution time-out of 0 indicates an unlimited wait (no time-out) + + + Analyze Query Performance + + + Application Intent + + + Automatically adjust the column widths based on the visible rows in the result set. Could have performance problems with a large number of columns or large cells + + + Automatically display query results in a new tab instead of the query pane. This option takes effect only if `mssql.enableRichExperiences` is enabled. + + + Automatically reveal the results panel when switching to an editor with query results. Only applies when 'Open Results in Tab' is enabled. + + + Azure MFA + + + Cancel Query + + + Change Connection + + + Change Database + + + Choose SQL handler for this file + + + Chooses which Authentication method to use + + + Clear All Connection Sharing Permissions + + + Clear All Query History + + + Clear Filters + + + Clear Microsoft Entra account token cache + + + Clear Pooled Connections + + + Command Timeout + + + Connect + + + Connect to a SQL Database + + + Connection Dialog + + + Connection Timeout + + + Connection groups + + + Connection profiles defined in 'User Settings' are shown under 'MS SQL: Connect' command in the command palette. + + + Connections + + + Controls the max number of rows allowed to do filtering and sorting in memory. If the number is exceeded, sorting and filtering will be disabled. Warning: Increasing this may impact performance. + + + Copy All + + + Copy Object Name + + + Create Azure Function with SQL binding + + + Create a Table with Table Designer + + + Create a new table in your database, or edit existing tables with the table designer. Once you're done making your changes, click the 'Publish' button to send the changes to your database. + + + Default view mode for query results display. + + + Delete + + + Delete Connection Group + + + Delete Container + + + Disable Actual Plan + + + Disable Group By Schema + + + Disabled + + + Disconnect + + + Display results in a formatted text format. + + + Display results in a tabular grid format (default) + + + Do not show prompts to display query results in a new tab. + + + Do not show prompts to enable UI-based features + + + Edit Connection + + + Edit Connection Group + + + Edit Connection Sharing Permissions + + + Enable Actual Plan + + + Enable Group By Schema + + + Enable Modern Features + + + Enable Modern Features + + + Enable Parameterization for Always Encrypted + + + Enable Query History Capture + + + Enable SET ANSI_DEFAULTS + + + Enable SET ANSI_NULLS + + + Enable SET ANSI_NULL_DFLT_ON + + + Enable SET ANSI_PADDING + + + Enable SET ANSI_WARNINGS + + + Enable SET ARITHABORT option + + + Enable SET CURSOR_CLOSE_ON_COMMIT + + + Enable SET DEADLOCK_PRIORITY option + + + Enable SET IMPLICIT_TRANSACTIONS + + + Enable SET LOCK TIMEOUT option (in milliseconds) + + + Enable SET NOCOUNT option + + + Enable SET NOEXEC option + + + Enable SET PARSEONLY option + + + Enable SET QUERY_GOVERNOR_COST_LIMIT + + + Enable SET QUOTED_IDENTIFIER + + + Enable SET STATISTICS IO option + + + Enable SET STATISTICS TIME option + + + Enable SET TRANSACTION ISOLATION LEVEL option + + + Enable SET XACT_ABORT ON option + + + Enable expand/collapse buttons in Schema Designer table nodes when tables have more than 10 columns + + + Enable modern features in MSSQL + + + Enable the new set of data development features that provide a modern way to work with your SQL database in VS Code. [Enable New Experiences](command:mssql.enableRichExperiences) + + + Enabled + + + Enables UI-based features in the MSSQL extension for richer and more powerful features. Restart Visual Studio Code after changing this setting. + + + Enables connection pooling to improve overall connectivity performance. This setting is disabled by default. Visual Studio Code is required to be relaunched when the value is changed. To clear pooled connections, run the command: 'MS SQL: Clear Pooled Connections'. Note: May keep serverless databases active and prevent auto-pausing. + + + Enables experimental features in the MSSQL extension. The features are not production-ready and may have bugs or issues. Restart Visual Studio Code after changing this setting. + + + Enables use of the Sql Authentication Provider for 'Microsoft Entra Id Interactive' authentication mode when user selects 'AzureMFA' authentication. This enables Server-side resource endpoint integration when fetching access tokens. This option is only supported for 'MSAL' Authentication Library. Please restart Visual Studio Code after changing this option. + + + Estimated Plan + + + Execute Current Statement + + + Execute Query + + + Explain Query + + + Familiarize yourself with more features of the MSSQL extension that can help you be more productive. + + + Filter + + + Filter your Object Explorer Tree + + + Get Started with MSSQL for Visual Studio Code + + + Getting Started Guide + + + MSSQL Copilot + + + MSSQL configuration + + + Make a new connection to a SQL database, or edit existing connections with the connection dialog. You can connect to a database by entering your connection information, using a connection string, or browsing your Azure subscriptions. [Open Connection Dialog](command:mssql.addObjectExplorer) + + + Manage Connection Profiles + + + Maximum number of characters to store for each value in XML columns after running a query. Default value: 2,097,152. Valid value range: 1 to 2,147,483,647. + + + Maximum number of characters/bytes to store for each value in character/binary columns after running a query. Default value: 65,535. Valid value range: 1 to 2,147,483,647. + + + Maximum number of old files to remove upon startup that have expired mssql.logRetentionMinutes. Files that do not get cleaned up due to this limitation get cleaned up next time Azure Data Studio starts up. + + + Maximum number of rows to return before the server stops processing your query. + + + Maximum size of text and ntext data returned from a SELECT statement + + + Modify Table Structure + + + New Deployment + + + New Query + + + New Query + + + New Table + + + Next Steps with MSSQL for Visual Studio Code + + + Number of minutes to retain log files for backend services. Default is 1 week. + + + Number of query history entries to show in the Query History view + + + Object Explorer filters + + + Only see the database objects that matter most to you by applying filters to the Object Explorer tree. Start by clicking the filter button next to most folders in the Connections view. + + + Open Execution Plan File + + + Open New Query and Connect + + + Open Query + + + Open Query History in Command Palette + + + Open in Copilot Agent mode + + + Open in Copilot Ask mode + + + Pause Query History Capture + + + Prevent automatic execution of scripts (e.g., 'Select Top 1000'). When enabled, scripts will not be automatically executed upon generation. + + + Prompts users to sign in using their browser. + + + Query History + + + Query Results + + + Query editor and query results pane + + + Query plan visualization + + + Refresh + + + Refresh IntelliSense Cache + + + Remove + + + Remove Microsoft Entra Account + + + Replication + + + Reveal Query Result + + + Rewrite Query + + + Run Query + + + Run a SQL Query + + + SQL Container Name + + + SQL Container Version + + + SQL Scripts + + + Schema Compare + + + Schema Designer + + + Script as Alter + + + Script as Create + + + Script as Drop + + + Script as Execute + + + Select Top 1000 + + + Selected Azure subscriptions for browsing and managing servers and databases + + + Send Feedback + + + Set the font family for the results grid; set to blank to use the editor font + + + Set the font size for the results grid; set to blank to use the editor size + + + Shortcuts related to the results window + + + Should BIT columns be displayed as numbers (1 or 0)? If false, BIT columns will be displayed as 'true' or 'false' + + + Should IntelliSense be enabled + + + Should IntelliSense error checking be enabled + + + Should IntelliSense quick info be enabled + + + Should IntelliSense suggestions be enabled + + + Should IntelliSense suggestions be lowercase + + + Should Personally Identifiable Information (PII) be logged in the Azure Logs output channel and the output channel log file. + + + Should Query History feature be enabled + + + Should column definitions be aligned? + + + Should data types be formatted as UPPERCASE, lowercase, or none (not formatted) + + + Should keywords be formatted as UPPERCASE, lowercase, or none (not formatted) + + + Should language service be auto-disabled when extension detects Non-MSSQL files + + + Should query result selections and scroll positions be saved when switching tabs (may impact performance) + + + Should references to objects in a select statements be split into separate lines? E.g. for 'SELECT C1, C2 FROM T1' both C1 and C2 will be on separate lines + + + Show the active SQL connection details as a CodeLens suggestion at the top of the editor for quick visibility. + + + Sort and Filter Query Results + + + Sort and filter options for query results + + + Sort and filter your query results to find the data you need quickly. + + + Sovereign cloud equivalent for `.database.fabric.microsoft.com` (including leading dot) + + + Sovereign cloud equivalent for `.database.windows.net` (including leading dot) + + + Sovereign cloud equivalent for `.datawarehouse.fabric.microsoft.com` (including leading dot) + + + Sovereign cloud equivalent for `.sql.azuresynapse.net` (including leading dot) + + + Sovereign cloud equivalent for `https://analysis.windows.net/powerbi/api/` + + + Sovereign cloud equivalent for `https://api.fabric.microsoft.com/v1/` + + + Sovereign cloud equivalent for `https://database.windows.net/` + + + Sovereign cloud equivalent for `https://vault.azure.net/` + + + Start Container + + + Start Query History Capture + + + Stop Container + + + Table Designer + + + Temporarily store passwords for connections with 'Saved Passwords' disabled, until the extension is restarted. This prevents repeated password prompts when reusing connections within the same session. + + + The additional, MSSQL-specific custom configuration for the Sovereign Cloud to use with the Microsoft Sovereign Cloud authentication provider. This along with setting `microsoft-sovereign-cloud.environment` to `custom` and providing values for `microsoft-sovereign-cloud.customEnvironment` is required to use this feature with MSSQL. + + + The color of the connection group. + + + The description of the connection group. + + + The maximum number of characters to display for the connection info in the status bar. Set to -1 for no limit. + + + The maximum number of recently used connections to store in the connection list. + + + The name of the connection group. + + + The timeout in seconds for expanding a node in Object Explorer. The default value is 45 seconds. + + + The unique identifier for the connection group this connection profile belongs to. + + + The unique identifier for the connection group. + + + The unique identifier for the parent connection group. + + + The unique identifier for this connection profile. + + + This setting will be removed in a future release. + + + Toggle SQLCMD Mode + + + True for the messages pane to be open by default; false for closed + + + Understand what your query is doing by viewing the query plan. See the estimated plan without running the query, or view the actual query plan after running the query by toggling the buttons at the top of a query editor window. + + + Use Database + + + View & Edit Data (Preview) + + + Visualize a Query Plan + + + When enabled, colorizes the connection status bar item with the color of the connection group. This setting is disabled by default. This uses the connection group folder's color directly, and does not alter it in order to ensure contrast with the current VS Code theme. Users should choose connection group colors that work well with their theme. + + + When enabled, connection groups will be collapsed instead of expanded at startup. + + + When enabled, the database objects in Object Explorer will be categorized by schema. + + + Windows Authentication + + + Write a SQL query, and run it against your database. You can also click the 'Open in New Tab' button to view your query results in their own tab, and optionally set that as the default behavior. + + + Your first steps for connecting to and developing with a SQL database + + + [Optional] Character used for enclosing text fields when saving results as CSV + + + [Optional] Character(s) used for separating rows when saving results as CSV + + + [Optional] Configuration options for copying multi-line results from the Results View + + + [Optional] Configuration options for copying results from the Results View + + + [Optional] Configuration options for which column new result panes should open in + + + [Optional] Declares the application workload type when connecting to SQL Server such as ReadWrite or ReadOnly. Refer to SQL Server AlwaysOn for more detail. + + + [Optional] Delimiter for separating data items when saving results as CSV. Choose from common separators like comma (,), tab (\t), semicolon (;), or pipe (|) + + + [Optional] Do not show unsupported platform warnings + + + [Optional] File encoding used when saving results as CSV. Choose from UTF-8 (recommended), UTF-16, ASCII, or Latin-1 based on your target application compatibility + + + [Optional] Indicates the SQL Server language settings. + + + [Optional] Indicates the name of local docker container the connection is on + + + [Optional] Indicates whether this profile has an empty password explicitly set + + + [Optional] Indicates which server type the provider will expose through the DataReader. + + + [Optional] Log debug output to the VS Code console (Help -> Toggle Developer Tools) + + + [Optional] Log level for backend services. Azure Data Studio generates a file name every time it starts and if the file already exists the logs entries are appended to that file. For cleanup of old log files see logRetentionMinutes and logFilesRemovalLimit settings. The default tracingLevel does not log much. Changing verbosity could lead to extensive logging and disk space requirements for the logs. Error includes Critical, Warning includes Error, Information includes Warning and Verbose includes Information + + + [Optional] Should execution time be shown for individual batches + + + [Optional] Specify a custom name for this connection profile to easily browse and search in the command palette of Visual Studio Code. + + + [Optional] Specify the SQL Server authentication type. + + + [Optional] Specify the database name to connect to. If database is not specified, the default user database setting is used, typically 'master'. + + + [Optional] Specify the delay between attempts to restore connection. + + + [Optional] Specify the length of time in seconds to wait for a command to execute before terminating the attempt and generating an error. The default value is 30 seconds. + + + [Optional] Specify the length of time in seconds to wait for a connection to the server before terminating connection attempt and generating an error. The default value is 30 seconds. + + + [Optional] Specify the maximum number of connections allowed in the pool. + + + [Optional] Specify the minimum amount of time in seconds for this connection to live in the pool before being removed/deleted. + + + [Optional] Specify the minimum number of connections allowed in the pool. + + + [Optional] Specify the name of the application used for SQL Server to log (default: 'vscode-mssql'). + + + [Optional] Specify the name of the primary file, including the full path name, of an attachable database. + + + [Optional] Specify the name of the workstation connecting to SQL Server. + + + [Optional] Specify the name or network address of the instance of SQL Server that acts as a failover partner. + + + [Optional] Specify the number of attempts to restore connection. + + + [Optional] Specify the password for SQL Server authentication. If password is not specified or already saved, when you connect, you will be asked again. + + + [Optional] Specify the port number to connect to. + + + [Optional] Specify the size in bytes of the network packets to communicate with SQL Server. + + + [Optional] Specify the user name for SQL Server authentication. If user name is not specified, when you connect, you will be asked again. + + + [Optional] The ADO.NET connection string to use for the connection. Overrides any other options given in this connection. + + + [Optional] Used by SQL Server in replication. + + + [Optional] When 'Mandatory' or 'Strict', SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed. When set to 'Strict', SQL Server uses TDS 8.0 for all data transfer between the client and server. 'Strict' is supported on SQL Server 2022 onwards. + + + [Optional] When set to 'true', multiple result sets can be returned and read from on connection. + + + [Optional] When set to 'true', the SQL Server SSL certificate is automatically trusted when the communication layer is encrypted using SSL. Set 'false' for Azure SQL Database connection. + + + [Optional] When set to 'true', the connection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool. Note: May keep serverless databases active and prevent auto-pausing. + + + [Optional] When set to 'true', the detection and connection to the active server is faster if AlwaysOn Availability Group is configured on different subnets. + + + [Optional] When set to 'true', the password for SQL Server authentication is saved in the secure store of your operating system such as KeyChain in MacOS or Secure Store in Windows. + + + [Optional] When set to false, security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state. + + + [Optional] When specified (and encrypt=Mandatory and trustServerCertificate=false), SQL Server uses provided hostname for validating trust with the server certificate. + + + [Optional] When true, column headers are included when saving results as CSV + + + [Required] Specify the server name to connect to. Use 'hostname instance' or '<server>.database.windows.net' for Azure SQL Database. + + + auth + + + database + + + port + + + server + + + should commas be placed at the beginning of each statement in a list e.g. ', mycolumn2' instead of at the end e.g. 'mycolumn1,' + + + user + + \ No newline at end of file diff --git a/src/constants/locConstants.ts b/src/constants/locConstants.ts index 4ebd535786..0834163528 100644 --- a/src/constants/locConstants.ts +++ b/src/constants/locConstants.ts @@ -1353,7 +1353,12 @@ export class PublishProject { return l10n.t("Publish profile saved to: {0}", path); }; public static PublishProfileSaveFailed = l10n.t("Failed to save publish profile"); - public static DacFxServiceNotAvailable = l10n.t("DacFx service is not available"); + public static DacFxServiceNotAvailable = l10n.t( + "DacFx service is not available. Publish and generate script operations cannot be performed.", + ); + public static DacFxServiceNotAvailableProfileLoaded = l10n.t( + "DacFx service is not available. Profile loaded without deployment options. Publish and generate script operations cannot be performed.", + ); public static FailedToListDatabases = l10n.t("Failed to list databases"); } diff --git a/src/publishProject/publishProjectWebViewController.ts b/src/publishProject/publishProjectWebViewController.ts index 789c7fabc9..973be1423b 100644 --- a/src/publishProject/publishProjectWebViewController.ts +++ b/src/publishProject/publishProjectWebViewController.ts @@ -71,6 +71,9 @@ export class PublishProjectWebViewController extends FormWebviewController< lastPublishResult: undefined, hasFormErrors: true, deploymentOptions: deploymentOptions, + defaultDeploymentOptions: deploymentOptions + ? structuredClone(deploymentOptions) + : undefined, waitingForNewConnection: false, } as PublishDialogState, { @@ -91,18 +94,15 @@ export class PublishProjectWebViewController extends FormWebviewController< }, ); + // Clear default excludeObjectTypes for publish dialog, no default exclude options should exist + if (deploymentOptions?.excludeObjectTypes !== undefined) { + deploymentOptions.excludeObjectTypes.value = []; + } + this._sqlProjectsService = sqlProjectsService; this._dacFxService = dacFxService; this._connectionManager = connectionManager; - // Clear default excludeObjectTypes for publish dialog, no default exclude options should exist - if ( - this.state.deploymentOptions && - this.state.deploymentOptions.excludeObjectTypes !== undefined - ) { - this.state.deploymentOptions.excludeObjectTypes.value = []; - } - this.registerRpcHandlers(); // Listen for successful connections @@ -210,6 +210,22 @@ export class PublishProjectWebViewController extends FormWebviewController< return state; }); + this.registerReducer( + "updateDeploymentOptions", + async ( + state: PublishDialogState, + payload: { deploymentOptions: mssql.DeploymentOptions }, + ) => { + // Update deployment options and regenerate grouped options for UI + const newState = { + ...state, + deploymentOptions: payload.deploymentOptions, + }; + + return newState; + }, + ); + this.registerReducer("selectPublishProfile", async (state: PublishDialogState) => { // Derive project folder path from the project file path const projectFolderPath = state.projectFilePath @@ -244,7 +260,6 @@ export class PublishProjectWebViewController extends FormWebviewController< TelemetryActions.PublishProfileLoaded, ); - // Update state with all parsed values - UI components will consume when available return { ...state, formState: { @@ -258,6 +273,12 @@ export class PublishProjectWebViewController extends FormWebviewController< connectionString: parsedProfile.connectionString || state.connectionString, deploymentOptions: parsedProfile.deploymentOptions || state.deploymentOptions, + formMessage: !this._dacFxService + ? { + message: Loc.DacFxServiceNotAvailableProfileLoaded, + intent: "error" as const, + } + : undefined, }; } catch (error) { return { diff --git a/src/reactviews/common/locConstants.ts b/src/reactviews/common/locConstants.ts index ca5c3ba57a..328b710c76 100644 --- a/src/reactviews/common/locConstants.ts +++ b/src/reactviews/common/locConstants.ts @@ -931,6 +931,11 @@ export class LocConstants { SaveAs: l10n.t("Save As..."), generateScript: l10n.t("Generate Script"), publish: l10n.t("Publish"), + advancedOptions: l10n.t("Advanced"), + advancedPublishSettings: l10n.t("Advanced Publish Options"), + generalOptions: l10n.t("General Options"), + ignoreOptions: l10n.t("Ignore Options"), + excludeObjectTypes: l10n.t("Exclude Object Types"), }; } diff --git a/src/reactviews/pages/PublishProject/components/advancedDeploymentOptionsDrawer.tsx b/src/reactviews/pages/PublishProject/components/advancedDeploymentOptionsDrawer.tsx new file mode 100644 index 0000000000..985bed6974 --- /dev/null +++ b/src/reactviews/pages/PublishProject/components/advancedDeploymentOptionsDrawer.tsx @@ -0,0 +1,374 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { + Accordion, + AccordionHeader, + AccordionItem, + AccordionPanel, + Button, + DrawerBody, + DrawerHeader, + DrawerHeaderTitle, + OverlayDrawer, + SearchBox, + Checkbox, + InfoLabel, + makeStyles, +} from "@fluentui/react-components"; +import { Dismiss24Regular } from "@fluentui/react-icons"; +import React, { useState, useContext, useMemo, useEffect, useCallback } from "react"; +import { LocConstants } from "../../../common/locConstants"; +import { PublishProjectContext } from "../publishProjectStateProvider"; +import { usePublishDialogSelector } from "../publishDialogSelector"; +import { useAccordionStyles } from "../../../common/styles"; + +const useStyles = makeStyles({ + optionsList: { + display: "flex", + flexDirection: "column", + gap: "8px", + }, + drawerContent: { + display: "flex", + flexDirection: "column", + height: "100%", + }, + scrollableContent: { + flex: 1, + overflow: "auto", + paddingBottom: "16px", + }, + stickyFooter: { + position: "sticky", + bottom: "0", + backgroundColor: "var(--colorNeutralBackground1)", + borderTop: "1px solid var(--colorNeutralStroke2)", + padding: "16px 0", + display: "flex", + justifyContent: "flex-end", + gap: "8px", + marginTop: "auto", + }, +}); + +export const AdvancedDeploymentOptionsDrawer = ({ + isAdvancedDrawerOpen, + setIsAdvancedDrawerOpen, +}: { + isAdvancedDrawerOpen: boolean; + setIsAdvancedDrawerOpen: React.Dispatch>; +}) => { + const styles = useStyles(); + const accordionStyles = useAccordionStyles(); + const context = useContext(PublishProjectContext); + const [searchText, setSearchText] = useState(""); + const [userOpenedSections, setUserOpenedSections] = useState(["General"]); + const loc = LocConstants.getInstance(); + const state = usePublishDialogSelector((s) => s); + const [localChanges, setLocalChanges] = useState>( + [], + ); + + // Clear local changes when deploymentOptions change (e.g., from profile loading) + useEffect(() => { + setLocalChanges([]); + }, [state.deploymentOptions]); + + const getCurrentValue = useCallback( + (optionName: string, baseValue: boolean): boolean => { + const localChange = localChanges.find((change) => change.optionName === optionName); + return localChange ? localChange.value : baseValue; + }, + [localChanges], + ); + + // Create option groups from base deployment options, applying local changes + const optionGroups = useMemo(() => { + if (!state.deploymentOptions) return []; + + const groups: Array<{ + key: string; + label: string; + entries: Array<{ + key: string; + displayName: string; + description: string; + value: boolean; + }>; + }> = []; + + // Process boolean options and split into General and Ignore groups + if (state.deploymentOptions.booleanOptionsDictionary) { + const allBooleanEntries = Object.entries( + state.deploymentOptions.booleanOptionsDictionary, + ).map(([key, option]) => ({ + key, + displayName: option.displayName, + description: option.description, + value: getCurrentValue(key, option.value), + })); + + const generalEntries = allBooleanEntries + .filter((entry) => !entry.displayName.startsWith("Ignore")) + .sort((a, b) => a.displayName.localeCompare(b.displayName)); + + const ignoreEntries = allBooleanEntries + .filter((entry) => entry.displayName.startsWith("Ignore")) + .sort((a, b) => a.displayName.localeCompare(b.displayName)); + + // Add General Options group + if (generalEntries.length > 0) { + groups.push({ + key: "General", + label: loc.publishProject.generalOptions, + entries: generalEntries, + }); + } + + // Add Ignore Options group + if (ignoreEntries.length > 0) { + groups.push({ + key: "Ignore", + label: loc.publishProject.ignoreOptions, + entries: ignoreEntries, + }); + } + } + + // Exclude Object Types group + if (state.deploymentOptions.objectTypesDictionary) { + const baseExcludedTypes = state.deploymentOptions.excludeObjectTypes?.value || []; + const excludeEntries = Object.entries(state.deploymentOptions.objectTypesDictionary) + .map(([key, displayName]) => { + const baseExcluded = baseExcludedTypes.some( + (excludedType) => excludedType.toLowerCase() === key.toLowerCase(), + ); + + return { + key, + displayName: displayName || key, + description: "", + value: getCurrentValue(key, baseExcluded), + }; + }) + .filter((entry) => entry.displayName) + .sort((a, b) => a.displayName.localeCompare(b.displayName)); + + if (excludeEntries.length > 0) { + groups.push({ + key: "Exclude", + label: loc.publishProject.excludeObjectTypes, + entries: excludeEntries, + }); + } + } + + return groups; + }, [state.deploymentOptions, getCurrentValue, loc]); + + // Options change handler, inserts and removes the changed option in localChanges + const handleOptionChange = (optionName: string, checked: boolean) => { + setLocalChanges((prev) => { + const existingChange = prev.find((change) => change.optionName === optionName); + if (existingChange) { + return prev.filter((change) => change.optionName !== optionName); + } else { + return [...prev, { optionName, value: checked }]; + } + }); + }; + + const isResetDisabled = localChanges.length === 0; + + // Options reset handler, clears all local changes (reset to base deployment options) + const handleReset = () => { + setLocalChanges([]); + }; + + // Handle ok button click, Apply local changes and close drawer + const handleOk = () => { + if (!state.deploymentOptions || localChanges.length === 0) { + setIsAdvancedDrawerOpen(false); + return; + } + + const updatedOptions = structuredClone(state.deploymentOptions); + + // Apply each local change to the deployment options + localChanges.forEach(({ optionName, value }) => { + // Case 1: Boolean deployment option + if (updatedOptions.booleanOptionsDictionary?.[optionName]) { + updatedOptions.booleanOptionsDictionary[optionName].value = value; + return; + } + + // Case 2: Exclude object type + if ( + updatedOptions.objectTypesDictionary?.[optionName] && + updatedOptions.excludeObjectTypes + ) { + updateExcludedObjectTypes( + updatedOptions.excludeObjectTypes.value, + optionName, + value, + ); + } + }); + + // Send updated options back to parent component + context?.updateDeploymentOptions(updatedOptions); + setIsAdvancedDrawerOpen(false); + }; + + // Add or remove object type from exclude objects exclusion list + const updateExcludedObjectTypes = ( + excludedTypes: string[], + optionName: string, + shouldExclude: boolean, + ) => { + const isCurrentlyExcluded = excludedTypes.some( + (type) => type.toLowerCase() === optionName.toLowerCase(), + ); + + if (shouldExclude && !isCurrentlyExcluded) { + // Add to exclusion list + excludedTypes.push(optionName); + } else if (!shouldExclude && isCurrentlyExcluded) { + // Remove from exclusion list + const index = excludedTypes.findIndex( + (type) => type.toLowerCase() === optionName.toLowerCase(), + ); + if (index !== -1) { + excludedTypes.splice(index, 1); + } + } + }; + + // Clear local changes and close drawer + const handleCancel = () => { + setLocalChanges([]); + setIsAdvancedDrawerOpen(false); + }; + + const isOptionVisible = (option: { + key: string; + displayName: string; + description: string; + value: boolean; + }) => { + if (!searchText) return true; + + const lowerSearch = searchText.toLowerCase(); + return option.displayName.toLowerCase().includes(lowerSearch); + }; + + // Render a single option + const renderOption = (option: { + key: string; + displayName: string; + description: string; + value: boolean; + }) => { + return ( + handleOptionChange(option.key, data.checked === true)} + label={ + option.description ? ( + {option.displayName} + ) : ( + option.displayName + ) + } + /> + ); + }; + + if (!context) { + return undefined; + } + + return ( + !open && handleCancel()}> + + } + onClick={handleCancel} + /> + }> + {loc.publishProject.advancedPublishSettings} + + + + +
+
+ setSearchText(data.value ?? "")} + value={searchText} + /> + + { + if (!searchText) { + setUserOpenedSections(data.openItems as string[]); + } + }} + openItems={ + searchText ? optionGroups.map((g) => g.key) : userOpenedSections + }> + {optionGroups + .filter((group) => + group.entries.some((option) => isOptionVisible(option)), + ) + .map((group) => ( + + {group.label} + +
+ {group.entries + .filter((option) => isOptionVisible(option)) + .map((option) => renderOption(option))} +
+
+
+ ))} +
+
+ +
+ + +
+
+
+
+ ); +}; diff --git a/src/reactviews/pages/PublishProject/publishProject.tsx b/src/reactviews/pages/PublishProject/publishProject.tsx index 240810efaf..7a35d0bfb3 100644 --- a/src/reactviews/pages/PublishProject/publishProject.tsx +++ b/src/reactviews/pages/PublishProject/publishProject.tsx @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { useContext } from "react"; +import { useContext, useState } from "react"; import { Button, makeStyles } from "@fluentui/react-components"; import { useFormStyles } from "../../common/forms/form.component"; import { PublishProjectContext } from "./publishProjectStateProvider"; @@ -14,19 +14,14 @@ import { PublishProfileField } from "./components/PublishProfileSection"; import { PublishTargetSection } from "./components/PublishTargetSection"; import { ConnectionSection } from "./components/ConnectionSection"; import { DialogMessage } from "../../common/dialogMessage"; +import { AdvancedDeploymentOptionsDrawer } from "./components/advancedDeploymentOptionsDrawer"; const useStyles = makeStyles({ root: { padding: "12px" }, - footer: { - marginTop: "8px", - display: "flex", - justifyContent: "flex-end", - gap: "12px", - alignItems: "center", - maxWidth: "640px", - width: "100%", - paddingTop: "12px", - borderTop: "1px solid transparent", + rightButton: { + width: "150px", + marginLeft: "10px", + marginRight: "0px", }, }); @@ -35,6 +30,7 @@ function PublishProjectDialog() { const formStyles = useFormStyles(); const loc = LocConstants.getInstance().publishProject; const context = useContext(PublishProjectContext); + const [isAdvancedDrawerOpen, setIsAdvancedDrawerOpen] = useState(false); // Select pieces of state needed for this component const formState = usePublishDialogSelector((s) => s.formState); @@ -66,24 +62,39 @@ function PublishProjectDialog() { -
+
- +
+ + +
+ + ); diff --git a/src/reactviews/pages/PublishProject/publishProjectStateProvider.tsx b/src/reactviews/pages/PublishProject/publishProjectStateProvider.tsx index 4b4720ebfe..02e0f2cc35 100644 --- a/src/reactviews/pages/PublishProject/publishProjectStateProvider.tsx +++ b/src/reactviews/pages/PublishProject/publishProjectStateProvider.tsx @@ -13,6 +13,7 @@ import { PublishProjectProvider, } from "../../../sharedInterfaces/publishDialog"; import { FormEvent } from "../../../sharedInterfaces/form"; +import * as mssql from "vscode-mssql"; export interface PublishProjectContextProps extends PublishProjectProvider { extensionRpc: WebviewRpc; @@ -42,6 +43,8 @@ export const PublishProjectStateProvider: React.FC<{ children: React.ReactNode } extensionRpc.action("savePublishProfile", { publishProfileName }), openConnectionDialog: () => extensionRpc.action("openConnectionDialog"), closeMessage: () => extensionRpc.action("closeMessage"), + updateDeploymentOptions: (deploymentOptions: mssql.DeploymentOptions) => + extensionRpc.action("updateDeploymentOptions", { deploymentOptions }), extensionRpc, }), [extensionRpc], diff --git a/src/sharedInterfaces/publishDialog.ts b/src/sharedInterfaces/publishDialog.ts index 9228318e49..3931a64028 100644 --- a/src/sharedInterfaces/publishDialog.ts +++ b/src/sharedInterfaces/publishDialog.ts @@ -75,6 +75,9 @@ export interface PublishDialogState waitingForNewConnection?: boolean; connectionString?: string; formMessage?: DialogMessageSpec; + defaultDeploymentOptions?: mssql.DeploymentOptions; + previousDatabaseList?: { displayName: string; value: string }[]; + previousSelectedDatabase?: string; } /** @@ -99,11 +102,11 @@ export interface PublishDialogReducers extends FormReducers { publishProfilePath?: string; }; generatePublishScript: {}; - openPublishAdvanced: {}; selectPublishProfile: {}; savePublishProfile: { publishProfileName: string }; openConnectionDialog: {}; closeMessage: {}; + updateDeploymentOptions: { deploymentOptions: mssql.DeploymentOptions }; } /** @@ -124,4 +127,5 @@ export interface PublishProjectProvider { savePublishProfile(publishProfileName: string): void; openConnectionDialog(): void; closeMessage(): void; + updateDeploymentOptions(deploymentOptions: mssql.DeploymentOptions): void; } diff --git a/test/unit/publishProjectWebViewController.test.ts b/test/unit/publishProjectWebViewController.test.ts index ad9d3843a6..5a238de80c 100644 --- a/test/unit/publishProjectWebViewController.test.ts +++ b/test/unit/publishProjectWebViewController.test.ts @@ -116,6 +116,10 @@ suite("PublishProjectWebViewController Tests", () => { reducerHandlers.has("savePublishProfile"), "savePublishProfile reducer should be registered", ).to.be.true; + expect( + reducerHandlers.has("updateDeploymentOptions"), + "updateDeploymentOptions reducer should be registered", + ).to.be.true; }); test("default publish target is EXISTING_SERVER", async () => { @@ -191,8 +195,14 @@ suite("PublishProjectWebViewController Tests", () => { expect(controller.state.formState.publishTarget).to.equal(PublishTarget.LocalContainer); // Test that changing publish target updates field visibility - expect(controller.state.formComponents.containerPort?.hidden).to.not.be.true; - expect(controller.state.formComponents.serverName?.hidden).to.be.true; + expect( + controller.state.formComponents.containerPort?.hidden, + "containerPort should be visible for LocalContainer target", + ).to.not.be.true; + expect( + controller.state.formComponents.serverName?.hidden, + "serverName should be hidden for LocalContainer target", + ).to.be.true; }); test("Azure SQL project shows Azure-specific labels", async () => { @@ -293,6 +303,8 @@ suite("PublishProjectWebViewController Tests", () => { MyDatabase MyDatabase.sql Data Source=myserver.database.windows.net;Persist Security Info=False;User ID=admin;Pooling=False;MultipleActiveResultSets=False; + True + True 1 @@ -318,7 +330,7 @@ suite("PublishProjectWebViewController Tests", () => { // Mock file picker sandbox.stub(vscode.window, "showOpenDialog").resolves([vscode.Uri.file(profilePath)]); - // Mock DacFx service + // Mock DacFx service to return deployment options matching XML mockDacFxService.getOptionsFromProfile.resolves({ success: true, errorMessage: "", @@ -328,7 +340,18 @@ suite("PublishProjectWebViewController Tests", () => { description: "", displayName: "", }, - booleanOptionsDictionary: {}, + booleanOptionsDictionary: { + allowIncompatiblePlatform: { + value: true, + description: "Allow incompatible platform", + displayName: "Allow Incompatible Platform", + }, + ignoreComments: { + value: true, + description: "Ignore comments", + displayName: "Ignore Comments", + }, + }, objectTypesDictionary: {}, }, }); @@ -349,8 +372,23 @@ suite("PublishProjectWebViewController Tests", () => { Var2: "Value2", }); - // Verify deployment options were loaded from DacFx - expect(mockDacFxService.getOptionsFromProfile.calledOnce).to.be.true; + // Verify deployment options were loaded from DacFx matching XML properties + expect( + mockDacFxService.getOptionsFromProfile.calledOnce, + "DacFx getOptionsFromProfile should be called once when loading profile", + ).to.be.true; + expect(newState.deploymentOptions.excludeObjectTypes.value).to.deep.equal([ + "Users", + "Logins", + ]); + expect( + newState.deploymentOptions.booleanOptionsDictionary.allowIncompatiblePlatform?.value, + "allowIncompatiblePlatform should be true from parsed profile", + ).to.be.true; + expect( + newState.deploymentOptions.booleanOptionsDictionary.ignoreComments?.value, + "ignoreComments should be true from parsed profile", + ).to.be.true; }); test("savePublishProfile reducer is invoked and triggers save file dialog", async () => { @@ -358,40 +396,6 @@ suite("PublishProjectWebViewController Tests", () => { await controller.initialized.promise; - // Set up some form state to save - controller.state.formState.serverName = "localhost"; - controller.state.formState.databaseName = "TestDB"; - - // Stub showSaveDialog to simulate user choosing a save location - const savedProfilePath = "c:/profiles/NewProfile.publish.xml"; - sandbox.stub(vscode.window, "showSaveDialog").resolves(vscode.Uri.file(savedProfilePath)); - - // Mock DacFx service - mockDacFxService.savePublishProfile.resolves({ success: true, errorMessage: "" }); - - const reducerHandlers = controller["_reducerHandlers"] as Map; - const savePublishProfile = reducerHandlers.get("savePublishProfile"); - expect(savePublishProfile, "savePublishProfile reducer should be registered").to.exist; - - // Invoke the reducer with an optional default filename - const newState = await savePublishProfile(controller.state, { - event: "TestProject.publish.xml", - }); - - // Verify DacFx save was called - expect(mockDacFxService.savePublishProfile.calledOnce).to.be.true; - - // Verify the state is returned unchanged (savePublishProfile does NOT update path in state) - expect(newState.formState.publishProfilePath).to.equal( - controller.state.formState.publishProfilePath, - ); - }); - - test("savePublishProfile reducer saves server and database names to file", async () => { - const controller = createTestController(); - - await controller.initialized.promise; - // Set up server and database state controller.state.formState.serverName = "myserver.database.windows.net"; controller.state.formState.databaseName = "ProductionDB"; @@ -399,6 +403,31 @@ suite("PublishProjectWebViewController Tests", () => { EnvironmentName: "Production", }; + // Set up deployment options state + controller.state.deploymentOptions = { + excludeObjectTypes: { + value: ["Users", "Permissions"], + description: "Object types to exclude", + displayName: "Exclude Object Types", + }, + booleanOptionsDictionary: { + ignoreTableOptions: { + value: true, + description: "Ignore table options", + displayName: "Ignore Table Options", + }, + allowIncompatiblePlatform: { + value: false, + description: "Allow incompatible platform", + displayName: "Allow Incompatible Platform", + }, + }, + objectTypesDictionary: { + users: "Users", + permissions: "Permissions", + }, + }; + // Stub showSaveDialog to simulate user choosing a save location const savedProfilePath = "c:/profiles/ProductionProfile.publish.xml"; sandbox.stub(vscode.window, "showSaveDialog").resolves(vscode.Uri.file(savedProfilePath)); @@ -416,7 +445,10 @@ suite("PublishProjectWebViewController Tests", () => { }); // Verify DacFx save was called with correct parameters - expect(mockDacFxService.savePublishProfile.calledOnce).to.be.true; + expect( + mockDacFxService.savePublishProfile.calledOnce, + "DacFx savePublishProfile should be called once when saving profile", + ).to.be.true; const saveCall = mockDacFxService.savePublishProfile.getCall(0); expect(saveCall.args[0].replace(/\\/g, "/")).to.equal(savedProfilePath); // File path (normalize for cross-platform) @@ -424,6 +456,19 @@ suite("PublishProjectWebViewController Tests", () => { // Connection string is args[2] const sqlCmdVariables = saveCall.args[3]; // SQL CMD variables expect(sqlCmdVariables.get("EnvironmentName")).to.equal("Production"); + + // Verify deployment options are included (args[4]) + const deploymentOptions = saveCall.args[4]; + expect(deploymentOptions).to.exist; + expect(deploymentOptions.excludeObjectTypes.value).to.deep.equal(["Users", "Permissions"]); + expect( + deploymentOptions.booleanOptionsDictionary.ignoreTableOptions?.value, + "ignoreTableOptions should be true in saved deployment options", + ).to.be.true; + expect( + deploymentOptions.booleanOptionsDictionary.allowIncompatiblePlatform?.value, + "allowIncompatiblePlatform should be false in saved deployment options", + ).to.be.false; }); //#endregion @@ -437,14 +482,14 @@ suite("PublishProjectWebViewController Tests", () => { const serverComponent = controller.state.formComponents.serverName; expect(serverComponent).to.exist; expect(serverComponent.label).to.exist; - expect(serverComponent.required).to.be.true; + expect(serverComponent.required, "serverName component should be required").to.be.true; expect(controller.state.formState.serverName).to.equal(""); // Verify database component and default value (project name) const databaseComponent = controller.state.formComponents.databaseName; expect(databaseComponent).to.exist; expect(databaseComponent.label).to.exist; - expect(databaseComponent.required).to.be.true; + expect(databaseComponent.required, "databaseName component should be required").to.be.true; expect(controller.state.formState.databaseName).to.equal("MyTestProject"); }); @@ -482,4 +527,136 @@ suite("PublishProjectWebViewController Tests", () => { expect(controller.state.formState.databaseName).to.equal("SelectedDatabase"); }); //#endregion + + //#region Advanced Options Section Tests + test("deployment options should have three groups: General, Ignore, and Exclude", async () => { + const controller = createTestController(); + await controller.initialized.promise; + + // Set up comprehensive deployment options with all three types + const deploymentOptions = { + excludeObjectTypes: { + value: [], + description: "Object types to exclude", + displayName: "Exclude Object Types", + }, + booleanOptionsDictionary: { + allowDropBlockingAssemblies: { + value: false, + description: "Allow drop blocking assemblies", + displayName: "Allow Drop Blocking Assemblies", + }, + ignoreTableOptions: { + value: false, + description: "Ignore table options during deployment", + displayName: "Ignore Table Options", + }, + ignoreIndexes: { + value: false, + description: "Ignore indexes during deployment", + displayName: "Ignore Indexes", + }, + }, + objectTypesDictionary: { + users: "Users", + logins: "Logins", + tables: "Tables", + }, + }; + + const reducerHandlers = controller["_reducerHandlers"] as Map; + const updateDeploymentOptions = reducerHandlers.get("updateDeploymentOptions"); + + // Update deployment options + const newState = await updateDeploymentOptions(controller.state, { + deploymentOptions, + }); + + // Verify we have the expected structure + expect(newState.deploymentOptions.booleanOptionsDictionary).to.exist; + expect(newState.deploymentOptions.objectTypesDictionary).to.exist; + expect(newState.deploymentOptions.excludeObjectTypes).to.exist; + + // Verify General group - one option that doesn't start with "Ignore" + expect(newState.deploymentOptions.booleanOptionsDictionary.allowDropBlockingAssemblies).to + .exist; + + // Verify Ignore group - one option that starts with "Ignore" + expect(newState.deploymentOptions.booleanOptionsDictionary.ignoreTableOptions).to.exist; + + // Verify Exclude group - object types dictionary + expect(newState.deploymentOptions.objectTypesDictionary.users).to.equal("Users"); + }); + + test("updateDeploymentOptions reducer should save and collect options properly", async () => { + const controller = createTestController(); + await controller.initialized.promise; + + const originalOptions = { + excludeObjectTypes: { + value: ["Users"], + description: "Object types to exclude", + displayName: "Exclude Object Types", + }, + booleanOptionsDictionary: { + allowDropBlockingAssemblies: { + value: false, + description: "Allow drop blocking assemblies", + displayName: "Allow Drop Blocking Assemblies", + }, + }, + objectTypesDictionary: { + users: "Users", + logins: "Logins", + }, + }; + + const updatedOptions = { + excludeObjectTypes: { + value: ["Users", "Logins"], + description: "Object types to exclude", + displayName: "Exclude Object Types", + }, + booleanOptionsDictionary: { + allowDropBlockingAssemblies: { + value: true, + description: "Allow drop blocking assemblies", + displayName: "Allow Drop Blocking Assemblies", + }, + }, + objectTypesDictionary: { + users: "Users", + logins: "Logins", + }, + }; + + const reducerHandlers = controller["_reducerHandlers"] as Map; + const updateDeploymentOptions = reducerHandlers.get("updateDeploymentOptions"); + + // Set initial state + let newState = await updateDeploymentOptions(controller.state, { + deploymentOptions: originalOptions, + }); + + // Verify initial state is saved correctly + expect(newState.deploymentOptions.excludeObjectTypes.value).to.deep.equal(["Users"]); + expect( + newState.deploymentOptions.booleanOptionsDictionary.allowDropBlockingAssemblies.value, + ).to.be.false; + + // Update with new options + newState = await updateDeploymentOptions(newState, { + deploymentOptions: updatedOptions, + }); + + // Verify updated state is collected properly + expect(newState.deploymentOptions.excludeObjectTypes.value).to.deep.equal([ + "Users", + "Logins", + ]); + expect( + newState.deploymentOptions.booleanOptionsDictionary.allowDropBlockingAssemblies.value, + ).to.be.true; + }); + //#endregion });