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:
Z Chen
2023-08-28 11:16:38 -07:00
committed by GitHub
parent 57d0fa8e79
commit 98c17b85e7
4 changed files with 39 additions and 9 deletions

View File

@@ -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