--- title: "Deprecated Database Engine Features in SQL Server 2016 | Microsoft Docs" ms.custom: "" ms.date: "05/09/2018" ms.prod: sql ms.prod_service: high-availability ms.component: "database-engine" ms.reviewer: "" ms.suite: "sql" ms.technology: - "database-engine" ms.tgt_pltfrm: "" ms.topic: conceptual helpviewer_keywords: - "deprecated features [SQL Server]" - "Database Engine [SQL Server], backward compatibility" - "deprecation [SQL Server], feature list" ms.assetid: c10eeaa5-3d3c-49b4-a4bd-5dc4fb190142 caps.latest.revision: 215 author: MikeRayMSFT ms.author: mikeray manager: craigg --- # Deprecated Database Engine Features in SQL Server 2016 [!INCLUDE[tsql-appliesto-ss2016-xxxx-xxxx-xxx-md](../includes/tsql-appliesto-ss2016-xxxx-xxxx-xxx-md.md)] This topic describes the deprecated [!INCLUDE[ssDEnoversion](../includes/ssdenoversion-md.md)] features that are still available in [!INCLUDE[sssql15-md](../includes/sssql15-md.md)]. Deprecated features should not be used in new applications. When a feature is marked deprecated, it means: - The feature is in maintenance mode only. No new changes will be done, including those related to inter-operability with new features. - We strive not to remove a deprecated feature from future releases to make upgrades easier. However, under rare situations, we may choose to permanently remove the feature from [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] if it limits future innovations. - For new development work, we do not recommend using deprecated features. For [!INCLUDE[sssqlv14-md](../includes/sssqlv14-md.md)], see [Deprecated Database Engine Features in SQL Server 2017](../database-engine/deprecated-database-engine-features-in-sql-server-2017.md). You can monitor the use of deprecated features by using the [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] Deprecated Features Object performance counter and trace events. For more information, see [Use SQL Server Objects](../relational-databases/performance-monitor/use-sql-server-objects.md). The value of these counters are also available by executing the following statement: ```sql SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features'; ``` ## Features deprecated in the next version of SQL Server The following [!INCLUDE[ssDEnoversion](../includes/ssdenoversion-md.md)] features will not be supported in the next version of [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)]. Do not use these features in new development work, and modify applications that currently use these features as soon as possible. The **Feature name** value appears in trace events as the ObjectName and in performance counters and `sys.dm_os_performance_counters` as the instance name. The **Feature ID** value appears in trace events as the ObjectId. |Category|Deprecated feature|Replacement|Feature name|Feature ID| |--------------|------------------------|-----------------|------------------|----------------| |Backup and Restore|RESTORE { DATABASE | LOG } WITH [MEDIA]PASSWORD continues to be deprecated. BACKUP { DATABASE | LOG } WITH PASSWORD and BACKUP { DATABASE | LOG } WITH MEDIAPASSWORD are discontinued.|None.|BACKUP DATABASE or LOG WITH PASSWORD

BACKUP DATABASE or LOG WITH MEDIAPASSWORD|104

103| |Compatibility levels|Upgrade from version 110 ([!INCLUDE[ssKatmai](../includes/sskatmai-md.md)] and [!INCLUDE[ssKilimanjaro](../includes/sskilimanjaro-md.md)]).|When a [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] version goes out of [support](http://aka.ms/sqllifecycle), the associated database compatibility level will be marked deprecated. However, we will continue to support applications certified on any supported Database Compatibility Level as long as possible, to make the upgrades easier. For more information about compatibility levels, see [ALTER DATABASE Compatibility Level (Transact-SQL)](../t-sql/statements/alter-database-transact-sql-compatibility-level.md).|Database compatibility level 100|108| |Database objects|Ability to return result sets from triggers|None|Returning results from trigger|12| |Encryption|Encryption using RC4 or RC4_128 is deprecated and is scheduled to be removed in the next version. Decrypting RC4 and RC4_128 is not deprecated.|Use another encryption algorithm such as AES.|Deprecated encryption algorithm|253| |Remote servers|sp_addremotelogin

sp_addserver

sp_dropremotelogin

sp_helpremotelogin

sp_remoteoption|Replace remote servers by using linked servers. sp_addserver can only be used with the local option.|sp_addremotelogin

sp_addserver

sp_dropremotelogin

sp_helpremotelogin

sp_remoteoption|70

69

71

72

73| |Remote servers|\@\@remserver|Replace remote servers by using linked servers.|None|None| |Remote servers|SET REMOTE_PROC_TRANSACTIONS|Replace remote servers by using linked servers.|SET REMOTE_PROC_TRANSACTIONS|110| |Set options|**SET ROWCOUNT** for **INSERT**, **UPDATE**, and **DELETE** statements|TOP keyword|SET ROWCOUNT|109| |Table hints|HOLDLOCK table hint without parenthesis.|Use HOLDLOCK with parenthesis.|HOLDLOCK table hint without parenthesis|167| ## Features deprecated in a future version of SQL Server The following [!INCLUDE[ssDEnoversion](../includes/ssdenoversion-md.md)] features are supported in the next version of [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)], but will be deprecated in a later version. The specific version of [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] has not been determined. |Category|Deprecated feature|Replacement|Feature name|Feature ID| |--------------|------------------------|-----------------|------------------|----------------| |Compatibility levels|sp_dbcmptlevel|ALTER DATABASE … SET COMPATIBILITY_LEVEL. For more information, see [ALTER DATABASE Compatibility Level (Transact-SQL)](../t-sql/statements/alter-database-transact-sql-compatibility-level.md).|sp_dbcmptlevel|80| |Compatibility levels|Database compatibility level 110 and 120.|Plan to upgrade the database and application for a future release.|Database compatibility level 110

Database compatibility level 120|| |XML|Inline XDR Schema Generation|The XMLDATA directive to the FOR XML option is deprecated. Use XSD generation in the case of RAW and AUTO modes. There is no replacement for the XMLDATA directive in EXPLICT mode.|XMLDATA|181| |Backup and restore|BACKUP { DATABASE | LOG } TO TAPE

BACKUP { DATABASE | LOG } TO *device_that_is_a_tape*|BACKUP { DATABASE | LOG } TO DISK

BACKUP { DATABASE | LOG } TO *device_that_is_a_disk*|BACKUP DATABASE or LOG TO TAPE|235| |Backup and restore|sp_addumpdevice'**tape**'|sp_addumpdevice'**disk**'|ADDING TAPE DEVICE|236| |Backup and restore|sp_helpdevice|sys.backup_devices|sp_helpdevice|100| |Collations|Korean_Wansung_Unicode

Lithuanian_Classic

SQL_AltDiction_CP1253_CS_AS|None. These collations exist in [!INCLUDE[ssVersion2005](../includes/ssversion2005-md.md)], but are not visible through fn_helpcollations.|Korean_Wansung_Unicode

Lithuanian_Classic

SQL_AltDiction_CP1253_CS_AS|191

192

194| |Collations|Hindi

Macedonian|These collations exist in [!INCLUDE[ssVersion2005](../includes/ssversion2005-md.md)] and higher, but are not visible through fn_helpcollations. Use Macedonian_FYROM_90 and Indic_General_90 instead.|Hindi

Macedonian|190

193| |Collations|Azeri_Latin_90

Azeri_Cyrilllic_90|Azeri_Latin_100

Azeri_Cyrilllic_100|Azeri_Latin_90

Azeri_Cyrilllic_90|232

233| |Configuration|SET ANSI_NULLS OFF and ANSI_NULLS OFF database option

SET ANSI_PADDING OFF and ANSI_PADDING OFF database option

SET CONCAT_NULL_YIELDS_NULL OFF and CONCAT_NULL_YIELDS_NULL OFF database option

SET OFFSETS|None.

ANSI_NULLS, ANSI_PADDING and CONCAT_NULLS_YIELDS_NULL will always be set to ON. SET OFFSETS will be unavailable.|SET ANSI_NULLS OFF

SET ANSI_PADDING OFF

SET CONCAT_NULL_YIELDS_NULL OFF

SET OFFSETS

ALTER DATABASE SET ANSI_NULLS OFF

ALTER DATABASE SET ANSI_PADDING OFF

ALTER DATABASE SET CONCAT_NULL_YIELDS_NULL OFF|111

113

112

36

111

113

112| |Data types|sp_addtype

sp_droptype|CREATE TYPE

DROP TYPE|sp_addtype

sp_droptype|62

63| |Data types|**timestamp** syntax for **rowversion** data type|**rowversion** data type syntax|TIMESTAMP|158| |Data types|Ability to insert null values into **timestamp** columns.|Use a DEFAULT instead.|INSERT NULL into TIMESTAMP columns|179| |Data types|'text in row' table option|Use **varchar(max)**, **nvarchar(max)**, and **varbinary(max)** data types. For more information, see [sp_tableoption (Transact-SQL)](../relational-databases/system-stored-procedures/sp-tableoption-transact-sql.md).|Text in row table option|9| |Data types|Data types:

**text**

**ntext**

**image**|Use **varchar(max)**, **nvarchar(max)**, and **varbinary(max)** data types.|Data types: **text**, **ntext** or **image**|4| |Database management|sp_attach_db

sp_attach_single_file_db|CREATE DATABASE statement with the FOR ATTACH option. To rebuild multiple log files, when one or more have a new location, use the FOR ATTACH_REBUILD_LOG option.|sp_attach_db

sp_attach_single_file_db|81

82| |Database objects|CREATE DEFAULT

DROP DEFAULT

sp_bindefault

sp_unbindefault|DEFAULT keyword in CREATE TABLE and ALTER TABLE|CREATE_DROP_DEFAULT

sp_bindefault

sp_unbindefault|162

64

65| |Database objects|CREATE RULE

DROP RULE

sp_bindrule

sp_unbindrule|CHECK keyword in CREATE TABLE and ALTER TABLE|CREATE_DROP_RULE

sp_bindrule

sp_unbindrule|161

66

67| |Database objects|sp_change_users_login|Use ALTER USER.|sp_change_users_login|231| |Database objects|sp_depends|sys.dm_sql_referencing_entities and sys.dm_sql_referenced_entities|sp_depends|19| |Database objects|sp_renamedb|MODIFY NAME in ALTER DATABASE|sp_renamedb|79| |Database objects|sp_getbindtoken|Use MARS or distributed transactions.|sp_getbindtoken|98| |Database options|sp_bindsession|Use MARS or distributed transactions.|sp_bindsession|97| |Database options|sp_resetstatus|ALTER DATABASE SET { ONLINE | EMERGENCY }|sp_resetstatus|83| |Database options|TORN_PAGE_DETECTION option of ALTER DATABASE|PAGE_VERIFY TORN_PAGE_DETECTION option of ALTER DATABASE|ALTER DATABASE WITH TORN_PAGE_DETECTION|102| |DBCC|DBCC DBREINDEX|REBUILD option of ALTER INDEX.|DBCC DBREINDEX|11| |DBCC|DBCC INDEXDEFRAG|REORGANIZE option of ALTER INDEX|DBCC INDEXDEFRAG|18| |DBCC|DBCC SHOWCONTIG|sys.dm_db_index_physical_stats|DBCC SHOWCONTIG|10| |DBCC|DBCC PINTABLE

DBCC UNPINTABLE|Has no effect.|DBCC [UN]PINTABLE|189| |Extended properties|Level0type = 'type' and Level0type = 'USER' to add extended properties to level-1 or level-2 type objects.|Use Level0type = 'USER' only to add an extended property directly to a user or role.

Use Level0type = 'SCHEMA' to add an extended property to level-1 types such as TABLE or VIEW, or level-2 types such as COLUMN or TRIGGER. For more information, see [sp_addextendedproperty (Transact-SQL)](../relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql.md).|EXTPROP_LEVEL0TYPE

EXTPROP_LEVEL0USER|13

14| |Extended stored procedure programming|srv_alloc

srv_convert

srv_describe

srv_getbindtoken

srv_got_attention

srv_message_handler

srv_paramdata

srv_paraminfo

srv_paramlen

srv_parammaxlen

srv_paramname

srv_paramnumber

srv_paramset

srv_paramsetoutput

srv_paramstatus

srv_paramtype

srv_pfield

srv_pfieldex

srv_rpcdb

srv_rpcname

srv_rpcnumber

srv_rpcoptions

srv_rpcowner

srv_rpcparams

srv_senddone

srv_sendmsg

srv_sendrow

srv_setcoldata

srv_setcollen

srv_setutype

srv_willconvert

srv_wsendmsg|Use CLR Integration instead.|XP_API|20| |Extended stored procedure programming|sp_addextendedproc

sp_dropextendedproc

sp_helpextendedproc|Use CLR Integration instead.|sp_addextendedproc

sp_dropextendedproc

sp_helpextendedproc|94

95

96| |Extended stored procedures|xp_grantlogin

xp_revokelogin

xp_loginConfig|Use CREATE LOGIN

Use DROP LOGIN IsIntegratedSecurityOnly argument of SERVERPROPERTY|xp_grantlogin

xp_revokelogin

xp_loginconfig|44

45

59| |Functions|fn_get_sql|sys.dm_exec_sql_text|fn_get_sql|151| |Hash algorithms|The MD2, MD4, MD5, SHA, and SHA1 algorithms. These are not available under compatibility level 130.|Use SHA2_256 or SHA2_512.|Deprecated hash algorithm|| |High availability|database mirroring|[!INCLUDE[ssHADR](../includes/sshadr-md.md)]

If your edition of [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] does not support [!INCLUDE[ssHADR](../includes/sshadr-md.md)], use log shipping.|DATABASE_MIRRORING|267| |Index options|sp_indexoption|ALTER INDEX|sp_indexoption|78| |Index options|CREATE TABLE, ALTER TABLE, or CREATE INDEX syntax without parentheses around the options.|Rewrite the statement to use the current syntax.|INDEX_OPTION|33| |Instance options|sp_configure option 'allow updates'|System tables are no longer updatable. Setting has no effect.|sp_configure 'allow updates'|173| |Instance options|sp_configure options:

'locks'

'open objects'

'set working set size'|Now automatically configured. Setting has no effect.|sp_configure 'locks'

sp_configure 'open objects'

sp_configure 'set working set size'|174

175

176| |Instance options|sp_configure option 'priority boost'|System tables are no longer updatable. Setting has no effect. Use the Windows start /high … program.exe option instead.|sp_configure 'priority boost'|199| |Instance options|sp_configure option 'remote proc trans'|System tables are no longer updatable. Setting has no effect.|sp_configure 'remote proc trans'|37| |Linked servers|Specifying the SQLOLEDB provider for linked servers.|SQL Server Native Client (SQLNCLI)|SQLOLEDDB for linked servers|19| |Locking|sp_lock|sys.dm_tran_locks|sp_lock|99| |Metadata|FILE_ID

INDEXKEY_PROPERTY|FILE_IDEX

sys.index_columns|FILE_ID

INDEXKEY_PROPERTY|15

17| |Native XML Web Services|The CREATE ENDPOINT or ALTER ENDPOINT statement with the FOR SOAP option.

sys.endpoint_webmethods

sys.soap_endpoints|Use Windows Communications Foundation (WCF) or ASP.NET instead.|CREATE/ALTER ENDPOINT

sys.endpoint_webmethods

EXT_soap_endpoints

sys.soap_endpoints|21

22

23| |Removable databases|sp_certify_removable

sp_create_removable|sp_detach_db|sp_certify_removable

sp_create_removable|74

75| |Removable databases|sp_dbremove|DROP DATABASE|sp_dbremove|76| |Security|The ALTER LOGIN WITH SET CREDENTIAL syntax|Replaced by the new ALTER LOGIN ADD and DROP CREDENTIAL syntax|ALTER LOGIN WITH SET CREDENTIAL|230| |Security|sp_addapprole

sp_dropapprole|CREATE APPLICATION ROLE

DROP APPLICATION ROLE|sp_addapprole

sp_dropapprole|53

54| |Security|sp_addlogin

sp_droplogin|CREATE LOGIN

DROP LOGIN|sp_addlogin

sp_droplogin|39

40| |Security|sp_adduser

sp_dropuser|CREATE USER

DROP USER|sp_adduser

sp_dropuser|49

50| |Security|sp_grantdbaccess

sp_revokedbaccess|CREATE USER

DROP USER|sp_grantdbaccess

sp_revokedbaccess|51

52| |Security|sp_addrole

sp_droprole|CREATE ROLE

DROP ROLE|sp_addrole

sp_droprole|56

57| |Security|sp_approlepassword

sp_password|ALTER APPLICATION ROLE

ALTER LOGIN|sp_approlepassword

sp_password|55

46| |Security|sp_changeobjectowner|ALTER SCHEMA or ALTER AUTHORIZATION|sp_changeobjectowner|58| |Security|sp_control_dbmasterkey_password|A master key must exist and password must be correct.|sp_control_dbmasterkey_password|274| |Security|sp_defaultdb

sp_defaultlanguage|ALTER LOGIN|sp_defaultdb

sp_defaultlanguage|47

48| |Security|sp_denylogin

sp_grantlogin

sp_revokelogin|ALTER LOGIN DISABLE

CREATE LOGIN

DROP LOGIN|sp_denylogin

sp_grantlogin

sp_revokelogin|42

41

43| |Security|USER_ID|DATABASE_PRINCIPAL_ID|USER_ID|16| |Security|sp_srvrolepermission

sp_dbfixedrolepermission|These stored procedures return information that was correct in [!INCLUDE[ssVersion2000](../includes/ssversion2000-md.md)]. The output does not reflect changes to the permissions hierarchy implemented in [!INCLUDE[ssKatmai](../includes/sskatmai-md.md)]. For more information, see [Permissions of Fixed Server Roles](http://msdn.microsoft.com/library/ms175892\(SQL.100\).aspx).|sp_srvrolepermission

sp_dbfixedrolepermission|61

60| |Security|GRANT ALL

DENY ALL

REVOKE ALL|GRANT, DENY, and REVOKE specific permissions.|ALL Permission|35| |Security|PERMISSIONS intrinsic function|Query sys.fn_my_permissions instead.|PERMISSIONS|170| |Security|SETUSER|EXECUTE AS|SETUSER|165| |Security|RC4 and DESX encryption algorithms|Use another algorithm such as AES.|DESX algorithm|238| |SET options|SET FMTONLY|[sys.dm_exec_describe_first_result_set (Transact-SQL)](../relational-databases/system-dynamic-management-views/sys-dm-exec-describe-first-result-set-transact-sql.md), [sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)](../relational-databases/system-dynamic-management-views/sys-dm-exec-describe-first-result-set-for-object-transact-sql.md), [sp_describe_first_result_set (Transact-SQL)](../relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql.md), and [sp_describe_undeclared_parameters (Transact-SQL)](../relational-databases/system-stored-procedures/sp-describe-undeclared-parameters-transact-sql.md).|SET FMTONLY|250| |Server Configuration Options|c2 audit option

default trace enabled option|[common criteria compliance enabled Server Configuration Option](../database-engine/configure-windows/common-criteria-compliance-enabled-server-configuration-option.md)

[Extended Events](../relational-databases/extended-events/extended-events.md)|sp_configure 'c2 audit mode'

sp_configure 'default trace enabled'|252

253| |SMO classes|**Microsoft.SQLServer. Management.Smo.Information** class

**Microsoft.SQLServer. Management.Smo.Settings** class

**Microsoft.SQLServer.Management. Smo.DatabaseOptions** class

**Microsoft.SqlServer.Management.Smo. DatabaseDdlTrigger.NotForReplication** property|**Microsoft.SqlServer. Management.Smo.Server** class

**Microsoft.SqlServer. Management.Smo.Server** class

**Microsoft.SqlServer. Management.Smo.Database** class

None|None|None| |SQL Server Agent|**net send** notification

Pager notification|E-mail notification

E-mail notification |None|None| |[!INCLUDE[ssManStudioFull](../includes/ssmanstudiofull-md.md)]|Solution Explorer integration in [!INCLUDE[ssManStudioFull](../includes/ssmanstudiofull-md.md)]||None|None| |System Stored Procedures|sp_db_increased_partitions|None. Support for increased partitions is available by default in [!INCLUDE[ssCurrent](../includes/sscurrent-md.md)].|sp_db_increased_partitions|253| |System tables|sysaltfiles

syscacheobjects

syscolumns

syscomments

sysconfigures

sysconstraints

syscurconfigs

sysdatabases

sysdepends

sysdevices

sysfilegroups

sysfiles

sysforeignkeys

sysfulltextcatalogs

sysindexes

sysindexkeys

syslockinfo

syslogins

sysmembers

sysmessages

sysobjects

sysoledbusers

sysopentapes

sysperfinfo

syspermissions

sysprocesses

sysprotects

sysreferences

sysremotelogins

sysservers

systypes

sysusers|Compatibility views. For more information, see [Compatibility Views (Transact-SQL)](~/relational-databases/system-compatibility-views/system-compatibility-views-transact-sql.md).

**Important:** The compatibility views do not expose metadata for features that were introduced in [!INCLUDE[ssVersion2005](../includes/ssversion2005-md.md)]. We recommend that you upgrade your applications to use catalog views. For more information, see [Catalog Views (Transact-SQL)](../relational-databases/system-catalog-views/catalog-views-transact-sql.md).|sysaltfiles

syscacheobjects

syscolumns

syscomments

sysconfigures

sysconstraints

syscurconfigs

sysdatabases

sysdepends

sysdevices

sysfilegroups

sysfiles

sysforeignkeys

sysfulltextcatalogs

sysindexes

sysindexkeys

syslockinfo

syslogins

sysmembers

sysmessages

sysobjects

sysoledbusers

sysopentapes

sysperfinfo

syspermissions

sysprocesses

sysprotects

sysreferences

sysremotelogins

sysservers

systypes

sysusers|141

None

133

126

146

131

147

142

123

144

128

127

130

122

132

134

143

140

119

137

125

139

145

157

121

153

120

129

138

136

135

124| |System tables|sys.numbered_procedures

sys.numbered_procedure_parameters|None|numbered_procedures

numbered_procedure_parameters|148

149| |System functions|fn_virtualservernodes

fn_servershareddrives|sys.dm_os_cluster_nodes

sys.dm_io_cluster_shared_drives|fn_virtualservernodes

fn_servershareddrives|155

156| |System views|sys.sql_dependencies|sys.sql_expression_dependencies|sys.sql_dependencies|198| |Table compression|The use of the vardecimal storage format.|Vardecimal storage format is deprecated. [!INCLUDE[ssCurrent](../includes/sscurrent-md.md)] data compression, compresses decimal values as well as other data types. We recommend that you use data compression instead of the vardecimal storage format.|Vardecimal storage format|200| |Table compression|Use of the sp_db_vardecimal_storage_format procedure.|Vardecimal storage format is deprecated. [!INCLUDE[ssCurrent](../includes/sscurrent-md.md)] data compression, compresses decimal values as well as other data types. We recommend that you use data compression instead of the vardecimal storage format.|sp_db_vardecimal_storage_format|201| |Table compression|Use of the sp_estimated_rowsize_reduction_for_vardecimal procedure.|Use data compression and the sp_estimate_data_compression_savings procedure instead.|sp_estimated_rowsize_reduction_for_vardecimal|202| |Table hints|Specifying NOLOCK or READUNCOMMITTED in the FROM clause of an UPDATE or DELETE statement.|Remove the NOLOCK or READUNCOMMITTED table hints from the FROM clause.|NOLOCK or READUNCOMMITTED in UPDATE or DELETE|1| |Table hints|Specifying table hints without using the WITH keyword.|Use WITH.|Table hint without WITH|8| |Table hints|INSERT_HINTS||INSERT_HINTS|34| |Textpointers|WRITETEXT

UPDATETEXT

READTEXT|None|UPDATETEXT or WRITETEXT

READTEXT|115

114| |Textpointers|TEXTPTR()

TEXTVALID()|None|TEXTPTR

TEXTVALID|5

6| |[!INCLUDE[tsql](../includes/tsql-md.md)]|:: function-calling sequence|Replaced by SELECT *column_list* FROM sys.\<*function_name*>().

For example, replace `SELECT * FROM ::fn_virtualfilestats(2,1)`with `SELECT * FROM sys.fn_virtualfilestats(2,1)`.|'::' function calling syntax|166| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Three-part and four-part column references.|Two-part names is the standard-compliant behavior.|More than two-part column name|3| |[!INCLUDE[tsql](../includes/tsql-md.md)]|A string enclosed in quotation marks used as a column alias for an expression in a SELECT list:

'*string_alias*' = *expression*|*expression* [AS] *column_alias*

*expression* [AS] [*column_alias*]

*expression* [AS] "*column_alias*"

*expression* [AS] '*column_alias*'

*column_alias* = *expression*|String literals as column aliases|184| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Numbered procedures|None. Do not use.|ProcNums|160| |[!INCLUDE[tsql](../includes/tsql-md.md)]|*table_name.index_name* syntax in DROP INDEX|*index_name* ON *table_name* syntax in DROP INDEX.|DROP INDEX with two-part name|163| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Not ending [!INCLUDE[tsql](../includes/tsql-md.md)] statements with a semicolon.|End [!INCLUDE[tsql](../includes/tsql-md.md)] statements with a semicolon ( ; ).|None|None| |[!INCLUDE[tsql](../includes/tsql-md.md)]|GROUP BY ALL|Use custom case-by-case solution with UNION or derived table.|GROUP BY ALL|169| |[!INCLUDE[tsql](../includes/tsql-md.md)]|ROWGUIDCOL as a column name in DML statements.|Use $rowguid.|ROWGUIDCOL|182| |[!INCLUDE[tsql](../includes/tsql-md.md)]|IDENTITYCOL as a column name in DML statements.|Use $identity.|IDENTITYCOL|183| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Use of #, ## as temporary table and temporary stored procedure names.|Use at least one additional character.|'#' and '##' as the name of temporary tables and stored procedures|185| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Use of \@, \@\@, or \@\@ as [!INCLUDE[tsql](../includes/tsql-md.md)] identifiers.|Do not use \@ or \@\@ or names that begin with \@\@ as identifiers.|'\@' and names that start with '\@\@' as [!INCLUDE[tsql](../includes/tsql-md.md)] identifiers|186.| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Use of DEFAULT keyword as default value.|Do not use the word DEFAULT as a default value.|DEFAULT keyword as a default value|187| |[!INCLUDE[tsql](../includes/tsql-md.md)]|Use of a space as a separator between table hints.|Use a comma to separate table hints.|Multiple table hints without comma|168| |[!INCLUDE[tsql](../includes/tsql-md.md)]|The select list of an aggregate indexed view must contain COUNT_BIG (\*) in 90 compatibility mode|Use COUNT_BIG (\*).|Index view select list without COUNT_BIG(\*)|2| |[!INCLUDE[tsql](../includes/tsql-md.md)]|The indirect application of table hints to an invocation of a multi-statement table-valued function (TVF) through a view.|None.|Indirect TVF hints|7| |[!INCLUDE[tsql](../includes/tsql-md.md)]|ALTER DATABASE syntax:

MODIFY FILEGROUP READONLY

MODIFY FILEGROUP READWRITE|MODIFY FILEGROUP READ_ONLY

MODIFY FILEGROUP READ_WRITE|MODIFY FILEGROUP READONLY

MODIFY FILEGROUP READWRITE|195

196| |Other|DB-Library

Embedded SQL for C|Although the [!INCLUDE[ssDE](../includes/ssde-md.md)] still supports connections from existing applications that use the DB-Library and Embedded SQL APIs, it does not include the files or documentation required to do programming work on applications that use these APIs. A future version of the [!INCLUDE[ssDEnoversion](../includes/ssdenoversion-md.md)] will drop support for connections from DB-Library or Embedded SQL applications. Do not use DB-Library or Embedded SQL to develop new applications. Remove any dependencies on either DB-Library or Embedded SQL when you are modifying existing applications. Instead of these APIs, use the SQLClient namespace or an API such as ODBC. [!INCLUDE[ssCurrent](../includes/sscurrent-md.md)] does not include the DB-Library DLL required to run these applications. To run DB-Library or Embedded SQL applications, you must have available the DB-Library DLL from [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] version 6.5, [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] 7.0, or [!INCLUDE[ssVersion2000](../includes/ssversion2000-md.md)].|None|None| |Tools|SQL Server Profiler for Trace Capture|Use Extended Events Profiler embedded in SQL Server Management Studio.|SQL Server Profiler|None| |Tools|SQL Server Profiler for Trace Replay|[SQL Server Distributed Replay](../tools/distributed-replay/sql-server-distributed-replay.md)|SQL Server Profiler|None| |Trace Management Objects|Microsoft.SqlServer.Management.Trace namespace (contains the APIs for SQL Server Trace and Replay objects)|Trace Configuration:

Trace Reading:

Trace Replay: None||| |SQL Trace stored procedures, functions, and catalog views|sp_trace_create

sp_trace_setevent

sp_trace_setfilter

sp_trace_setstatus

fn_trace_geteventinfo

fn_trace_getfilterinfo

fn_trace_getinfo

fn_trace_gettable

sys.traces

sys.trace_events

sys.trace_event_bindings

sys.trace_categories

sys.trace_columns

sys.trace_subclass_values|[Extended Events](../relational-databases/extended-events/extended-events.md)|sp_trace_create

sp_trace_setevent

sp_trace_setfilter

sp_trace_setstatus

fn_trace_geteventinfo

fn_trace_getfilterinfo

fn_trace_getinfo

fn_trace_gettable

sys.traces

sys.trace_events

sys.trace_event_bindings

sys.trace_categories

sys.trace_columns

sys.trace_subclass_values|258

260

261

259

256

257| > [!NOTE] > The cookie **OUTPUT** parameter for **sp_setapprole** is currently documented as **varbinary(8000)** which is the correct maximum length. However the current implementation returns **varbinary(50)**. If developers have allocated **varbinary(50)** the application might require changes if the cookie return size increases in a future release. Though not a deprecation issue this is mentioned in this topic because the application adjustments are similar. For more information, see [sp_setapprole (Transact-SQL)](../relational-databases/system-stored-procedures/sp-setapprole-transact-sql.md). ## See Also [Discontinued Database Engine Functionality in SQL Server 2016](../database-engine/discontinued-database-engine-functionality-in-sql-server-2016.md) [Deprecated Database Engine Features in SQL Server 2017](../database-engine/deprecated-database-engine-features-in-sql-server-2017.md)