summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/changelog/changelog_10.rst12
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py16
2 files changed, 18 insertions, 10 deletions
diff --git a/doc/build/changelog/changelog_10.rst b/doc/build/changelog/changelog_10.rst
index 0ea3633b7..8fd6b1dca 100644
--- a/doc/build/changelog/changelog_10.rst
+++ b/doc/build/changelog/changelog_10.rst
@@ -20,6 +20,18 @@
.. change::
:tags: bug, mssql
+ :tickets: 3810
+ :versions: 1.1.0
+
+ Changed the query used to get "default schema name", from one that
+ queries the database principals table to using the
+ "schema_name()" function, as issues have been reported that the
+ former system was unavailable on the Azure Data Warehouse edition.
+ It is hoped that this will finally work across all SQL Server
+ versions and authentication styles.
+
+ .. change::
+ :tags: bug, mssql
:tickets: 3814
:versions: 1.1.0
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index 9db025df7..19558a2d6 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -1730,17 +1730,13 @@ class MSDialect(default.DefaultDialect):
def _get_default_schema_name(self, connection):
if self.server_version_info < MS_2005_VERSION:
return self.schema_name
-
- query = sql.text("""
- SELECT default_schema_name FROM
- sys.database_principals
- WHERE principal_id=database_principal_id()
- """)
- default_schema_name = connection.scalar(query)
- if default_schema_name is not None:
- return util.text_type(default_schema_name)
else:
- return self.schema_name
+ query = sql.text("SELECT schema_name()")
+ default_schema_name = connection.scalar(query)
+ if default_schema_name is not None:
+ return util.text_type(default_schema_name)
+ else:
+ return self.schema_name
@_db_plus_owner
def has_table(self, connection, tablename, dbname, owner, schema):