mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-28 09:35:38 -05:00
Add projects support for Fabric DW (#24014)
* Update STS and add new platform * Update vsix version * Create Fabric DW project from database * Fix target platform name * Address comments * Revert projects version to 1.3.0 * Update STS to 4.9.0.22 * PR comment
This commit is contained in:
@@ -620,6 +620,7 @@ export function differentDbDifferentServerExampleUsage(server: string, db: strin
|
||||
|
||||
//#region Target platforms
|
||||
export const targetPlatformToVersion: Map<string, string> = new Map<string, string>([
|
||||
// Note: the values here must match values from Microsoft.Data.Tools.Schema.SchemaModel.SqlPlatformNames
|
||||
[SqlTargetPlatform.sqlServer2012, '110'],
|
||||
[SqlTargetPlatform.sqlServer2014, '120'],
|
||||
[SqlTargetPlatform.sqlServer2016, '130'],
|
||||
@@ -627,7 +628,8 @@ export const targetPlatformToVersion: Map<string, string> = new Map<string, stri
|
||||
[SqlTargetPlatform.sqlServer2019, '150'],
|
||||
[SqlTargetPlatform.sqlServer2022, '160'],
|
||||
[SqlTargetPlatform.sqlAzure, 'AzureV12'],
|
||||
[SqlTargetPlatform.sqlDW, 'Dw']
|
||||
[SqlTargetPlatform.sqlDW, 'Dw'],
|
||||
[SqlTargetPlatform.sqlDwUnified, 'DwUnified']
|
||||
]);
|
||||
|
||||
export const onPremServerVersionToTargetPlatform: Map<number, SqlTargetPlatform> = new Map<number, SqlTargetPlatform>([
|
||||
|
||||
@@ -718,9 +718,10 @@ export async function fileContainsCreateTableStatement(fullPath: string, project
|
||||
/**
|
||||
* Gets target platform based on the server edition/version
|
||||
* @param serverInfo server information
|
||||
* @param serverUrl optional server URL, only used to check if it's a known domain for Microsoft Fabric DW
|
||||
* @returns target platform for the database project
|
||||
*/
|
||||
export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.ServerInfo | vscodeMssql.IServerInfo): Promise<SqlTargetPlatform | undefined> {
|
||||
export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.ServerInfo | vscodeMssql.IServerInfo, serverUrl?: string): Promise<SqlTargetPlatform | undefined> {
|
||||
const isCloud = serverInfo.isCloud;
|
||||
|
||||
let targetPlatform;
|
||||
@@ -728,9 +729,25 @@ export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.
|
||||
const engineEdition = serverInfo.engineEditionId;
|
||||
const azdataApi = getAzdataApi();
|
||||
if (azdataApi) {
|
||||
targetPlatform = engineEdition === azdataApi.DatabaseEngineEdition.SqlDataWarehouse ? SqlTargetPlatform.sqlDW : SqlTargetPlatform.sqlAzure;
|
||||
// TODO: Update this when Fabric DW gets its own engine edition
|
||||
// https://github.com/microsoft/azuredatastudio/issues/24112
|
||||
if (engineEdition === azdataApi.DatabaseEngineEdition.SqlOnDemand && isSqlDwUnifiedServer(serverUrl)) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDwUnified;
|
||||
} else if (engineEdition === azdataApi.DatabaseEngineEdition.SqlDataWarehouse) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDW;
|
||||
} else {
|
||||
targetPlatform = SqlTargetPlatform.sqlAzure;
|
||||
}
|
||||
} else {
|
||||
targetPlatform = engineEdition === vscodeMssql.DatabaseEngineEdition.SqlDataWarehouse ? SqlTargetPlatform.sqlDW : SqlTargetPlatform.sqlAzure;
|
||||
// TODO: Update this when Fabric DW gets its own engine edition
|
||||
// https://github.com/microsoft/azuredatastudio/issues/24112
|
||||
if (engineEdition === vscodeMssql.DatabaseEngineEdition.SqlOnDemand && isSqlDwUnifiedServer(serverUrl)) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDwUnified;
|
||||
} else if (engineEdition === vscodeMssql.DatabaseEngineEdition.SqlDataWarehouse) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDW;
|
||||
} else {
|
||||
targetPlatform = SqlTargetPlatform.sqlAzure;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const serverMajorVersion = serverInfo.serverMajorVersion;
|
||||
@@ -740,6 +757,16 @@ export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.
|
||||
return targetPlatform;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if a server name is a known domain for Microsoft Fabric DW. This is required because the engine edition for Fabric DW is the same as Serverless.
|
||||
* @param server The server name to check
|
||||
* @returns True if the server name matches a known domain for Microsoft Fabric DW, otherwise false
|
||||
*/
|
||||
export function isSqlDwUnifiedServer(server?: string): boolean | undefined {
|
||||
const serverLowerCase = server?.toLowerCase();
|
||||
return serverLowerCase?.includes("datawarehouse.pbidedicated.windows.net") || serverLowerCase?.includes("datawarehouse.fabric.microsoft.com");
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if a given character is a valid filename character
|
||||
* @param c Character to validate
|
||||
|
||||
Reference in New Issue
Block a user