Differences between Aurora PostgreSQL with Babelfish and SQL Server - Amazon Aurora

Differences between Aurora PostgreSQL with Babelfish and SQL Server

Babelfish provides support for T-SQL and Microsoft SQL Server behavior by supporting SQL Server data types, syntax, and functions for Aurora PostgreSQL. This approach allows Aurora to support both Aurora PostgreSQL and SQL Server SQL dialects. Also, Babelfish supports the SQL Server wire-level protocol (TDS), allowing a SQL Server application to communicate natively with Aurora PostgreSQL. Doing this helps migrate database objects, stored procedures, and application code with fewer changes.

Although Babelfish doesn't offer complete support for T-SQL, you can use Aurora PostgreSQL SQL commands to perform many of the tasks normally handled by these commands. For example, suppose that you regularly use a specific T-SQL command that isn't supported by Babelfish. In this case, you can connect to the Aurora PostgreSQL port and use a PostgreSQL SQL command instead. For more information, see SQL Commands in the PostgreSQL documentation.

Aurora PostgreSQL offers functionality to replace many commonly used SQL Server features. Some examples of SQL Server functionality that can be replaced by the PostgreSQL functionality available in Aurora PostgreSQL follow. In this list, references are to the PostgreSQL documentation.

  • If you use SQL Server bulk copy, you can use the PostgreSQL COPY statement available in Aurora PostgreSQL. COPY is optimized for fast data loading.

  • If you use unsupported SQL Server GROUP BY clauses, you can use PostgreSQL GROUPING SETS.

  • If you use SQL Server JSON support, you can use PostgreSQL JSON functions and operators.

  • If you use SQL Server XML support, you can use PostgreSQL XML functions.

  • If you use SQL Server full-text search, you can use PostgreSQL full-text search.

  • If you use the SQL Server GEOGRAPHY data type, you can use PostGIS to provide support for geographical data and geographical data manipulation.

To help with cluster management in Aurora PostgreSQL, you can use its scalability, high-availability with failover support, and built-in replication. For more information about these capabilities, see Managing performance and scaling for Aurora DB clusters, High availability for Amazon Aurora, and Replication with Amazon Aurora. You also have access to other AWS tools and utilities:

  • Amazon CloudWatch is a monitoring and observability service that provides you with data and actionable insights.

  • Amazon RDS Performance Insights is a database performance tuning and monitoring feature that helps you quickly assess the load on your database.

  • Amazon RDS Multi-AZ deployments provide enhanced availability and durability for your database cluster.

  • Amazon RDS global databases allow a single Amazon Aurora database to span multiple AWS Regions, offering scalable, cross-Region replication.

  • Automatic software patching keeps your database up-to-date with the latest security and feature patches when they become available.

  • Overview of Amazon RDS event notification Amazon RDS events notify you by email or SMS message of important database events, such as an automated failover.

T-SQL limitations and unsupported functionality

Following, you can find a table of limitations or partially supported T-SQL syntax for Babelfish.

Functionality or syntax Notes

@@version

The format of the value returned by @@version is slightly different from the value returned by SQL Server. Your code might not work correctly if it depends on the formatting of @@version.

Aggregate functions (partially supported)

APPROX_COUNT_DISTINCT, CHECKSUM_AGG, GROUPING_ID, ROWCOUNT_BIG, STDEV, STDEVP, VAR, and VARP aren't supported.

ALTER TABLE

Supports adding or dropping a single column or constraint only.

Assembly modules and SQL Common Language Runtime (CLR) routines

Functionality related to assembly modules and CLR routines isn't supported.

BACKUP statement

Aurora PostgreSQL snapshots of a database are dissimilar to backup files created in SQL Server. Also, the granularity of when a backup and restore occurs might be different between SQL Server and Aurora PostgreSQL.

Blank column names with no column alias

The sqlcmd and psql utilities handle columns with blank names differently:

  • SQL Server sqlcmd returns a blank column name.

  • PostgreSQL psql returns a generated column name.

Collation, index on type dependent on the ICU library

An index on a user-defined type that depends on the ICU collation library (the library used by Babelfish) isn't invalidated when the version of the library is changed. For more information about collations, see Babelfish collation support.

COLLATIONPROPERTY function

Collation properties are implemented only for the supported Babelfish BBF collations. For more information about collations, see Babelfish collation support.

Column default

When creating a column default, the constraint name is ignored. To drop a column default, use the following syntax: ALTER TABLE...ALTER COLUMN..DROP DEFAULT...

Column name case

Column names are stored as lowercase in the PostgreSQL catalogs and are returned to the client in lowercase if you run a SELECT statement. In general, all schema identifiers are stored in lowercase in the PostgreSQL catalogs. For more information, see SQL-SYNTAX-IDENTIFIERS in the PostgreSQL documentation.

Column attributes

ROWGUIDCOL, SPARSE, FILESTREAM, and MASKED aren't supported.

CONNECTIONPROPERTY function

The unsupported properties include local_net_address, client_net_address, and physical_net_transport.

Constraints

PostgreSQL doesn't support turning on and turning off individual constraints. The statement is ignored and a warning is raised.

Constraints created with DESC (descending) columns

Constraints are created with ASC (ascending) columns.

Constraints with IGNORE_DUP_KEY

Constraints are created without this property.

Contained databases

Contained databases with logins authenticated at the database level rather than at the server level aren't supported.

CREATE, ALTER, DROP SERVER ROLE

ALTER SERVER ROLE is supported only for sysadmin. All other syntax is unsupported.

Babelfish provides the T-SQL user with an experience that is similar to SQL Server for the concepts of a login (server principal), a database, and a database user (database principal).

In Babelfish, currently only the dbo user is available in user databases. Currently, to operate as the dbo user, a login must be a member of the server-level sysadmin role (ALTER SERVER ROLE sysadmin ADD MEMBER login). Logins without sysadmin role can currently access only master and tempdb as the guest user.

Currently, because Babelfish only supports the dbo user in user databases, all application users must use a login that is a sysadmin member. You can't create a user with lesser privileges, such as read-only on certain tables.

CREATE DATABASE case-sensitive collation

Case-sensitive collations aren't supported with the CREATE DATABASE statement.

CREATE DATABASE keywords and clauses

Options except COLLATE and CONTAINMENT=NONE aren't supported. The COLLATE clause is accepted and is always set to the value of babelfishpg_tsql.server_collation_name.

CREATE SCHEMA... supporting clauses

You can use the CREATE SCHEMA command to create an empty schema. Use additional commands to create schema objects.

CREATE USER

This syntax isn't supported. The PostgreSQL statement CREATE USER doesn't create a user that is equivalent to the SQL Server CREATE USER syntax.

CREATE, ALTER LOGIN clauses are supported with limited syntax

The CREATE LOGIN... PASSWORD clause, ...DEFAULT_DATABASE clause, and ...DEFAULT_LANGUAGE clause are supported. The ALTER LOGIN... PASSWORD clause is supported, but ALTER LOGIN... OLD_PASSWORD clause isn't supported. Only a login that is a sysadmin member can modify a password.

LOGIN objects

All options for LOGIN objects except: PASSWORD, DEFAULT_DATABASE, ENABLE, DISABLE

CROSS APPLY

Lateral joins aren't supported.

Cross-database object references

Objects with three-part names aren't supported. For more information, see: Using Babelfish with a single database or multiple databases.

Cursors (updatable)

Updatable cursors aren't supported.

Cursors (global)

GLOBAL cursors aren't supported.

Cursor (fetch behaviors)

The following cursor fetch behaviors aren't supported: FETCH PRIOR, FIRST, LAST, ABSOLUTE, abd RELATIVE

Cursor-typed (variables and parameters)

Cursor-typed variables and parameters aren't supported.

Cursor options

SCROLL, KEYSET, DYNAMIC, FAST_FORWARD, SCROLL_LOCKS, OPTIMISTIC, TYPE_WARNING, and FOR UPDATE

Database ID values are different on Babelfish

The master and tempdb databases will not be database IDs 1 and 2.

Data encryption

Data encryption isn't supported.

DBCC commands

DBCC commands aren't supported.

DROP IF EXISTS

This syntax isn't supported for USER and SCHEMA objects. It's supported for the objects TABLE, VIEW, PROCEDURE, FUNCTION, and DATABASE.

DROP INDEX

This syntax is supported only in the form DROP index_name ON table_name.

DROP statements that drop multiple objects

This functionality is supported only for tables, views, functions, and procedures.

Encryption

Built-in functions and statements don't support encryption.

ENCRYPT_CLIENT_CERT connections

Client certificate connections aren't supported.

EXECUTE AS statement

This statement isn't supported.

EXECUTE AS SELF clause

This clause isn't supported in functions, procedures, or triggers.

CREATE... EXECUTE AS OWNER clause

EXECUTE AS OWNER or CALLER is supported for permission, but not for name resolution.

EXECUTE AS USER clause

This clause isn't supported in functions, procedures, or triggers.

EXECUTE with AS LOGIN or AT option

This syntax isn't supported.

Foreign key constraints referencing database name

Foreign key constraints that reference the database name aren't supported.

Full-text search

Full-text search built-in Functions and statements aren't supported.

Function declarations with greater than 100 parameters

Function declarations that contain more than 100 parameters aren't supported.

Function calls that include DEFAULT as a parameter value

DEFAULT isn't a supported parameter value for a function call.

Function calls that include ::

Function calls that include :: aren't supported.

Functions, externally defined

External functions, including SQL CLR functions, aren't supported.

GEOMETRY

This data type and all associated functionality isn't supported.

GEOGRAPHY

This data type and all associated functionality isn't supported.

Global temporary tables (tables with names that start with ##)

Global temporary tables aren't supported.

Graph functionality

All SQL graph functionality isn't supported.

HASHBYTES function

The only supported algorithms are: MD5, SHA1, and SHA256

HIERARCHYID

The data type and methods aren't supported.

Hints

Hints aren't supported for joins, queries, or tables.

Identifiers exceeding 63 characters

PostgreSQL supports a maximum of 63 characters for identifiers. Babelfish converts identifiers longer than 63 characters to a name that includes a hash of the original name.

Identifiers with leading dot characters

Identifiers that start with a . aren't supported.

Identifiers (variables or parameters) with multiple leading @ characters

Identifiers that start with more than one leading @ aren't supported.

Identifiers, table or column names that contain @ or ]] characters

Table or column names that contain an @ sign or square brackets aren't supported.

IDENTITY columns support

IDENTITY columns are supported for data types tinyint, smallint, int, bigint. numeric, and decimal.

SQL Server supports precision to 38 places for data types numeric and decimal in IDENTITY columns.

PostgreSQL supports precision to 19 places for data types numeric and decimal in IDENTITY columns.

Indexes with IGNORE_DUP_KEY

Syntax that creates an index that includes IGNORE_DUP_KEY creates an index as if this property is omitted.

Indexes with more than 32 columns

An index can't include more than 32 columns. Included index columns count toward the maximum in PostgreSQL but not in SQL Server.

INFORMATION_SCHEMA catalog

Information schema views aren't supported.

Inline indexes

Inline indexes aren't supported.

Indexes (clustered)

Clustered indexes are created as if NONCLUSTERED was specified.

Index clauses

The following clauses are ignored: FILLFACTOR, ALLOW_PAGE_LOCKS, ALLOW_ROW_LOCKS, PAD_INDEX, STATISTICS_NORECOMPUTE, OPTIMIZE_FOR_SEQUENTIAL_KEY, SORT_IN_TEMPDB, DROP_EXISTING, ONLINE, COMPRESSION_DELAY, MAXDOP, and DATA_COMPRESSION

Invoking a procedure whose name is in a variable

Using a variable as a procedure name isn't supported.

Materialized views

Materialized views aren't supported.

NEWSEQUENTIALID function

Implemented as NEWID; sequential behavior isn't guaranteed.

NEWSEQUENTIALID function

When calling NEWSEQUENTIALID, PostgreSQL generates a new GUID value.

NEXT VALUE FOR sequence clause

This syntax isn't supported.

NOT FOR REPLICATION clause

This syntax is accepted and ignored.

ODBC escape functions

ODBC escape functions aren't supported.

OUTER APPLY

SQL Server lateral joins aren't supported. PostgreSQL provides SQL syntax that allows a lateral join, but the behavior isn't identical. For more information about PostgreSQL lateral joins, see the PostgreSQL documentation.

OUTPUT clause is supported with the following limitations

OUTPUT and OUTPUT INTO aren't supported in the same DML query. References to non-target table of UPDATE or DELETE operations in an OUTPUT clause aren't supported. OUTPUT... DELETED *, INSERTED * aren't supported in the same query.

Partitioning

Table and index partitioning isn't supported.

Procedure calls that includes DEFAULT as a parameter value

DEFAULT isn't a supported parameter value.

Procedure declarations with more than 100 parameters

Declarations with more than 100 parameters aren't supported.

Procedures, externally defined

Externally defined procedures, including SQL CLR procedures, aren't supported.

Procedure versioning

Procedure versioning isn't supported.

Procedures WITH RECOMPILE

WITH RECOMPILE (when used in conjunction with the DECLARE and EXECUTE statements) isn't supported.

Procedure or function parameter limit

Babelfish supports a maximum of 100 parameters for a procedure or function.

Remote object references

Objects with four-part names aren't supported.. For more information, see: Configuring a database for Babelfish.

Server-level roles other than sysadmin

Server-level roles (other than sysadmin) aren't supported.

Database-level roles other than db_owner

Database-level roles other than db_owner aren't supported.

RESTORE statement

Aurora PostgreSQL snapshots of a database are dissimilar to backup files created in SQL Server. Also, the granularity of when the backup and restore occurs might be different between SQL Server and Aurora PostgreSQL.

ROLLBACK: table variables don't support transactional rollback

Processing might be interrupted if a rollback occurs in a session with table variables.

ROWGUIDCOL

This clause is currently ignored. Queries referencing $GUIDGOL cause a syntax error.

Row-level security

Row-level security with CREATE SECURITY POLICY and inline table-valued functions isn't supported.

ROWSET functions

The following ROWSET functions aren't supported: OPENXML, OPENJSON, OPENROWSET, OPENQUERY, OPENDATASOURCE

SELECT... FOR XML PATH, ELEMENTS

Syntax is supported without the ELEMENTS clause.

SELECT... FOR XML RAW, ELEMENTS

Syntax is supported without the ELEMENTS clause.

SERVERPROPERTY

Unsupported properties: BuildClrVersion, ComparisonStyle, ComputerNamePhysicalNetBIOS, EditionID, HadrManagerStatus, InstanceDefaultDataPath, InstanceDefaultLogPath, InstanceName, IsAdvancedAnalyticsInstalled, IsBigDataCluster, IsClustered, IsFullTextInstalled, IsHadrEnabled, IsIntegratedSecurityOnly, IsLocalDB, IsPolyBaseInstalled, IsXTPSupported, LCID, LicenseType, MachineName, NumLicenses, ProcessID, ProductBuild, ProductBuildType, ProductLevel, ProductUpdateLevel, ProductUpdateReference, ResourceLastUpdateDateTime, ResourceVersion, ServerName, SqlCharSet, SqlCharSetName, SqlSortOrder, SqlSortOrderName, FilestreamShareName, FilestreamConfiguredLevel, and FilestreamEffectiveLevel

Service broker functionality

Service broker functionality isn't supported.

SESSIONPROPERTY

Unsupported properties: ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, and NUMERIC_ROUNDABORT

SET LANGUAGE

This syntax isn't supported with any value other than english or us_english.

SEQUENCE object support

SEQUENCE objects are supported for the data types tinyint, smallint, int, bigint, numeric, and decimal.

Aurora PostgreSQL supports precision to 19 places for data types numeric and decimal in a SEQUENCE.

SET NUMERIC_ROUNDABORT ON

This setting isn't supported.

SP_CONFIGURE

This system stored procedure isn't supported.

SQL keyword SPARSE

The keyword SPARSE is accepted and ignored.

SQL keyword clause ON filegroup

This clause is currently ignored.

SQL keywords CLUSTERED and NONCLUSTERED for indexes and constraints

Babelfish accepts and ignores the CLUSTERED and NONCLUSTERED keywords.

System-defined @@ variables

Babelfish doesn't support system-defined @@variables other than these: @@VERSION, @@SPID, @@ROWCOUNT, @@TRANCOUNT, @@IDENTITY, @@ERROR, @@FETCH_STATUS, @@MAX_PRECISION, @@SERVERNAME, @@DATEFIRST

sysdatabases.cmptlevel

sysdatabases.cmptlevel are always NULL.

System-provided stored procedures are partially supported

SP_HELPDB, SP_GETAPPLOCK, and SP_RELEASEAPPLOCK are supported. All other stored procedures aren't supported.

Table value constructor syntax (FROM clause)

The unsupported syntax is for a derived table constructed with the FROM clause.

tempdb isn't reinitialized at restart

Permanent objects (like tables and procedures) created in tempdb aren't removed when the database is restarted.

Temporal tables

Temporal tables aren't supported.

Temporary procedures aren't dropped automatically

This functionality isn't supported.

TEXTIMAGE_ON filegroup

Babelfish ignores the TEXTIMAGE_ON filegroup clause.

Time precision

Babelfish supports 6-digit precision for fractional seconds. No adverse effects are anticipated with this behavior.

Transaction isolation levels

READUNCOMMITTED is treated the same as READCOMMITTED. REPEATABLEREAD, and SERIALIZABLE aren't supported.

TIMESTAMP data type

This data type isn't supported. The SQL Server TIMESTAMP type is unrelated to PostgreSQL TIMESTAMP.

Triggers, externally defined

These triggers aren't supported, including SQL Common Language Runtime (CLR).

Trigger for multiple DML actions cannot reference transition tables

Triggers that reference multiple DML actions can't reference transition tables.

Unquoted string values in stored procedure calls and default values

String parameters to stored procedure calls, and defaults for string parameters in CREATE PROCEDURE, are not supported.

Virtual computed columns (non-persistent)

Virtual computed columns are created as persistent.

WITH ENCRYPTION clause

This syntax isn't supported for functions, procedures, triggers, or views.

WITHOUT SCHEMABINDING clause

This clause isn't supported in functions, procedures, triggers, or views. The object is created, but as if WITH SCHEMABINDING was specified.

XML data type with schema (xmlschema)

XML type without schema is supported.

XML indexes

XML indexes aren't supported.

XML methods

XML methods aren't supported, including .VALUES, .NODES, and other methods.

XPATH expressions

This syntax isn't supported.

WITH XMLNAMESPACES construct

This syntax isn't supported.

Unsupported functionality in Babelfish

In the following lists, you can find functionality that isn't currently supported in Babelfish.

Commands for which certain functionality isn't supported

Certain functionality for the following commands isn't supported:

  • ADD SIGNATURE

  • ALTER DATABASE, ALTER DATABASE SET

  • CREATE, ALTER, DROP AUTHORIZATION

  • CREATE, ALTER, DROP AVAILABILITY GROUP

  • CREATE, ALTER, DROP BROKER PRIORITY

  • CREATE, ALTER, DROP COLUMN ENCRYPTION KEY

  • CREATE, ALTER, DROP DATABASE ENCRYPTION KEY

  • CREATE, ALTER, DROP, BACKUP CERTIFICATE

  • CREATE AGGREGATE

  • CREATE CONTRACT

  • GRANT

Syntax for which certain functionality isn't supported

Certain functionality for the following syntax isn't supported:

  • ALTER SERVICE, BACKUP/RESTORE SERVICE MASTER KEY clause

  • BEGIN DISTRIBUTED TRANSACTION

  • CREATE EXTERNAL TABLE

  • CREATE TABLE... GRANT clause

  • CREATE TABLE... IDENTITY clause

  • CREATE, ALTER, DROP APPLICATION ROLE

  • CREATE, ALTER, DROP ASSEMBLY

  • CREATE, ALTER, DROP ASYMMETRIC KEY

  • CREATE, ALTER, DROP EVENT SESSION

  • CREATE, ALTER, DROP EXTERNAL RESOURCE POOL

  • CREATE, ALTER, DROP FULLTEXT CATALOG

  • CREATE, ALTER, DROP FULLTEXT INDEX

  • CREATE, ALTER, DROP FULLTEXT STOPLIST

  • CREATE, ALTER, DROP QUEUE

  • CREATE, ALTER, DROP RESOURCE GOVERNOR

  • CREATE, ALTER, DROP ROUTE

  • CREATE, ALTER, DROP SERVICE

  • CREATE, ALTER, DROP WORKLOAD GROUP

  • CREATE, ALTER, DROP, OPEN/CLOSE, BACKUP/RESTORE MASTER KEY

  • CREATE/DROP RULE

Object types that aren't supported

The following object types aren't supported:

  • COLUMN MASTER KEY

  • CREATE, ALTER EXTERNAL DATA SOURCE

  • CREATE, ALTER, DROP DATABASE AUDIT SPECIFICATION

  • CREATE, ALTER, DROP EXTERNAL LIBRARY

  • CREATE, ALTER, DROP SERVER AUDIT

  • CREATE, ALTER, DROP SERVER AUDIT SPECIFICATION

  • CREATE, ALTER, DROP, OPEN/CLOSE SYMMETRIC KEY

  • CREATE, DROP DEFAULT

  • CREDENTIAL

  • CRYPTOGRAPHIC PROVIDER

  • DIAGNOSTIC SESSION

  • Indexed views

  • SERVICE MASTER KEY

  • SYNONYM

  • USER

Functions that aren't supported

The following functions aren't supported:

  • CERTENCODED function

  • CERTID function

  • CERTPRIVATEKEY function

  • CERTPROPERTY function

  • COLUMNPROPERTY

  • EVENTDATA function

  • GET_TRANSMISSION_STATUS

  • LOGINPROPERTY function

  • OBJECTPROPERTY

  • OBJECTPROPERTYEX

  • OPENXML

  • TYPEPROPERTY function

Syntax that isn't supported

The following syntax isn't supported:

  • ALTER DATABASE

  • ALTER DATABASE SCOPED CONFIGURATION

  • ALTER DATABASE SCOPED CREDENTIAL

  • ALTER DATABASE SET HADR

  • ALTER FUNCTION

  • ALTER INDEX

  • ALTER PROCEDURE statement

  • ALTER SCHEMA

  • ALTER SERVER CONFIGURATION

  • ALTER VIEW

  • BEGIN CONVERSATION TIMER

  • BEGIN DIALOG CONVERSATION

  • BULK INSERT

  • CREATE COLUMNSTORE INDEX

  • CREATE EXTERNAL FILE FORMAT

  • CREATE, ALTER, DROP CREDENTIAL

  • CREATE, ALTER, DROP CRYPTOGRAPHIC PROVIDER

  • CREATE, ALTER, DROP ENDPOINT

  • CREATE, ALTER, DROP EXTERNAL LANGUAGE

  • CREATE, ALTER, DROP MESSAGE TYPE

  • CREATE, ALTER, DROP PARTITION FUNCTION

  • CREATE, ALTER, DROP PARTITION SCHEME

  • CREATE, ALTER, DROP RESOURCE POOL

  • CREATE, ALTER, DROP ROLE

  • CREATE, ALTER, DROP SEARCH PROPERTY LIST

  • CREATE, ALTER, DROP SECURITY POLICY

  • CREATE, ALTER, DROP SELECTIVE XML INDEX clause

  • CREATE, ALTER, DROP SPATIAL INDEX

  • CREATE, ALTER, DROP TYPE

  • CREATE, ALTER, DROP XML INDEX

  • CREATE, ALTER, DROP XML SCHEMA COLLECTION

  • CREATE, DROP WORKLOAD CLASSIFIER

  • CREATE/ALTER/ENABLE/DISABLE TRIGGER

  • DENY

  • END, MOVE CONVERSATION

  • EXECUTE with AS LOGIN or AT option

  • GET CONVERSATION GROUP

  • GROUP BY ALL clause

  • GROUP BY CUBE clause

  • GROUP BY ROLLUP clause

  • INSERT... DEFAULT VALUES

  • INSERT... TOP

  • KILL

  • MERGE

  • NEXT VALUE FOR sequence clause

  • READTEXT

  • REVERT

  • REVOKE

  • SELECT PIVOT/UNPIVOT

  • SELECT TOP x PERCENT WHERE x <> 100

  • SELECT TOP... WITH TIES

  • SELECT... FOR XML AUTO

  • SELECT... FOR XML EXPLICIT

  • SEND

  • SET CONTEXT_INFO

  • SET DATEFORMAT

  • SET DEADLOCK_PRIORITY

  • SET FMTONLY

  • SET FORCEPLAN

  • SET LOCK_TIMEOUT

  • SET NUMERIC_ROUNDABORT ON

  • SET OFFSETS

  • SET REMOTE_PROC_TRANSACTIONS

  • SET ROWCOUNT @variable

  • SET ROWCOUNT n WHERE n != 0

  • SET SHOWPLAN_ALL

  • SET SHOWPLAN_TEXT

  • SET SHOWPLAN_XML

  • SET STATISTICS

  • SET STATISTICS IO

  • SET STATISTICS PROFILE

  • SET STATISTICS TIME

  • SET STATISTICS XML

  • SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

  • SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

  • SHUTDOWN statement

  • UPDATE STATISTICS

  • UPDATETEXT

  • Using EXECUTE to call a SQL function

  • VIEW... CHECK OPTION clause

  • VIEW... VIEW_METADATA clause

  • WAITFOR DELAY

  • WAITFOR TIME

  • WAITFOR, RECEIVE

  • WITH XMLNAMESPACES construct

  • WRITETEXT

  • XPATH expressions

Data types that aren't supported

The following data types aren't supported:

  • ROWVERSION

  • ROWVERSION data type

  • TIMESTAMP data type. The SQL Server TIMESTAMP date is unrelated to PostgreSQL TIMESTAMP.

Column names that aren't supported

The following column names aren't supported:

  • $IDENTITY

  • $ROWGUID

  • IDENTITYCOL

Settings that aren't supported

The following settings aren't supported:

  • SET ANSI_NULL_DFLT_OFF ON

  • SET ANSI_NULL_DFLT_ON OFF

  • SET ANSI_PADDING OFF

  • SET ANSI_WARNINGS OFF

  • SET ARITHABORT OFF

  • SET ARITHIGNORE ON

  • SET CURSOR_CLOSE_ON_COMMIT ON

  • SET NUMERIC_ROUNDABORT ON