diff --git a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs index 3758cf7dde..497649ab16 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs @@ -243,7 +243,7 @@ private void DetermineSqlDbType() SqlDbType = SqlDbType.NVarChar; break; default: - SqlDbType = DataTypeName.EndsWith(".sys.hierarchyid") ? SqlDbType.NVarChar : SqlDbType.Udt; + SqlDbType = DataTypeName.EndsWith(".sys.hierarchyid") ? SqlDbType.Binary : SqlDbType.Udt; break; } } diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs index 2970befe34..fe8a645c20 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs @@ -196,6 +196,18 @@ public async Task GeometryTypeTest() await ExecuteAndVerifyResult("SELECT geometry::STGeomFromText('POINT (-96.70 40.84)',4326) [Geo]", "0xE6100000010CCDCCCCCCCC2C58C0EC51B81E856B4440"); } + [Test] + public async Task SysnameTypeTest() + { + await ExecuteAndVerifyResult("SELECT CAST('testsysname' AS SYSNAME)", "testsysname"); + } + + [Test] + public async Task HierarchyIdTypeTest() + { + await ExecuteAndVerifyResult("SELECT CAST(0x58 as hierarchyid)", "0x58"); + } + private async Task ExecuteAndVerifyResult(string queryText, string expectedValue) { // Given a connection to a live database