.. changelog::
:version: 1.0.16
+ .. 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
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):