diff --git a/docs/connect/php/connection-options.md b/docs/connect/php/connection-options.md
index fb76c34da78..6217203585d 100644
--- a/docs/connect/php/connection-options.md
+++ b/docs/connect/php/connection-options.md
@@ -26,31 +26,33 @@ This topic lists the options that are permitted in the associative array (when u
|ApplicationIntent|String|Declares the application workload type when connecting to a server. Possible values are ReadOnly and ReadWrite.
For more information about [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] support for [!INCLUDE[ssHADR](../../includes/sshadr_md.md)], see [PHP Driver for SQL Server Support for High Availability, Disaster Recovery](../../connect/php/php-driver-for-sql-server-support-for-high-availability-disaster-recovery.md).|ReadWrite|
|AttachDBFileName|String|Specifies which database file the server should attach.|No value set.|
|CharacterSet
(not supported in the PDO_SQLSRV driver)|String|Specifies the character set used to send data to the server.
Possible values are SQLSRV_ENC_CHAR and UTF-8. For more information, see [How to: Send and Retrieve UTF-8 Data Using Built-In UTF-8 Support](../../connect/php/how-to-send-and-retrieve-utf-8-data-using-built-in-utf-8-support.md).|SQLSRV_ENC_CHAR|
-|ConnectionPooling|1 or **true** for connection pooling on.
0 or **false** for connection pooling off.|Specifies whether the connection is assigned from a connection pool (1 or **true**) or not (0 or **false**).|**true** (1)|
-|Database|String|Specifies the name of the database in use for the connection being established1.|The default database for the login being used.|
-|Encrypt|1 or **true** for encryption on.
0 or **false** for encryption off.|Specifies whether the communication with SQL Server is encrypted (1 or **true**) or unencrypted (0 or **false**)2.|**false** (0)|
+|ConnectionPooling|1 or **true** for connection pooling on.
0 or **false** for connection pooling off.|Specifies whether the connection is assigned from a connection pool (1 or **true**) or not (0 or **false**).1|**true** (1)|
+|Database|String|Specifies the name of the database in use for the connection being established2.|The default database for the login being used.|
+|Encrypt|1 or **true** for encryption on.
0 or **false** for encryption off.|Specifies whether the communication with SQL Server is encrypted (1 or **true**) or unencrypted (0 or **false**)3.|**false** (0)|
|Failover_Partner|String|Specifies the server and instance of the database's mirror (if enabled and configured) to use when the primary server is unavailable.
There are restrictions to using Failover_Partner with MultiSubnetFailover. For more information, see [PHP Driver for SQL Server Support for High Availability, Disaster Recovery](../../connect/php/php-driver-for-sql-server-support-for-high-availability-disaster-recovery.md).|No value set.|
|LoginTimeout|Integer (SQLSRV driver
String (PDO_SQLSRV driver|Specifies the number of seconds to wait before failing the connection attempt.|No timeout.|
|MultipleActiveResultSets|1 or **true** to use multiple active result sets.
0 or **false** to disable multiple active result sets.|Disables or explicitly enables support for multiple active Result sets (MARS).
For more information, see [How to: Disable Multiple Active Resultsets (MARS)](../../connect/php/how-to-disable-multiple-active-resultsets-mars.md).|true (1)|
|MultiSubnetFailover|String|Always specify **multiSubnetFailover=yes** when connecting to the availability group listener of a [!INCLUDE[ssSQL11](../../includes/sssql11_md.md)] availability group or a [!INCLUDE[ssSQL11](../../includes/sssql11_md.md)] Failover Cluster Instance. **multiSubnetFailover=yes** configures [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] to provide faster detection of and connection to the (currently) active server. Possible values are Yes and No.
For more information about [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] support for [!INCLUDE[ssHADR](../../includes/sshadr_md.md)], see [PHP Driver for SQL Server Support for High Availability, Disaster Recovery](../../connect/php/php-driver-for-sql-server-support-for-high-availability-disaster-recovery.md).|No|
-|PWD
(not supported in the PDO_SQLSRV driver)|String|Specifies the password associated with the User ID to be used when connecting with SQL Server Authentication3.|No value set.|
+|PWD
(not supported in the PDO_SQLSRV driver)|String|Specifies the password associated with the User ID to be used when connecting with SQL Server Authentication4.|No value set.|
|QuotedId|1 or **true** to use SQL-92 rules.
0 or **false** to use legacy rules.|Specifies whether to use SQL-92 rules for quoted identifiers (1 or **true**) or to use legacy Transact-SQL rules (0 or **false**).|**true** (1)|
|ReturnDatesAsStrings
(not supported in the PDO_SQLSRV driver)|1 or **true** to return date and time types as strings.
0 or **false** to return date and time types as PHP **DateTime** types.|Retrieves date and time types (datetime, date, time, datetime2, and datetimeoffset) as strings or as PHP types. When using the PDO_SQLSRV driver, dates are returned as strings. The PDO_SQLSRV driver has no **datetime** type.
For more information, see [How to: Retrieve Date and Time Type as Strings Using the SQLSRV Driver](../../connect/php/how-to-retrieve-date-and-time-type-as-strings-using-the-sqlsrv-driver.md).|**false**|
-|Scrollable|String|"buffered" indicates that you want a client-side (buffered) cursor, which allows you to cache an entire result set in memory. See [Cursor Types (SQLSRV Driver)](../../connect/php/cursor-types-sqlsrv-driver.md) for more information.|Forward-only cursor|
-|Server
(not supported in the SQLSRV driver)|String|The [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] instance to connect to.
You can also specify a virtual network name, to connect to an AlwaysOn availability group. For more information about [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] support for [!INCLUDE[ssHADR](../../includes/sshadr_md.md)], see [PHP Driver for SQL Server Support for High Availability, Disaster Recovery](../../connect/php/php-driver-for-sql-server-support-for-high-availability-disaster-recovery.md).|Server is a required keyword (although it does not have to be the first keyword in the connection string). If a server name is not passed to the keyword, an attempt will be made to connect to the local instance.
The value passed to Server can be the name of a [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] instance, or the IP address of the instance. You can optionally specify a port number (for example, `sqlsrv:server=(local),1033`).
Beginning in version 3.0 of the [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] you can also specify a LocalDB instance with `server=(localdb)\instancename`. For more information, see [PHP Driver for SQL Server Support for LocalDB](../../connect/php/php-driver-for-sql-server-support-for-localdb.md).|
+|Scrollable|String|"buffered" indicates that you want a client-side (buffered) cursor, which allows you to cache an entire result set in memory. For more information, see [Cursor Types (SQLSRV Driver)](../../connect/php/cursor-types-sqlsrv-driver.md).|Forward-only cursor|
+|Server
(not supported in the SQLSRV driver)|String|The [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] instance to connect to.
You can also specify a virtual network name, to connect to an AlwaysOn availability group. For more information about [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] support for [!INCLUDE[ssHADR](../../includes/sshadr_md.md)], see [PHP Driver for SQL Server Support for High Availability, Disaster Recovery](../../connect/php/php-driver-for-sql-server-support-for-high-availability-disaster-recovery.md).|Server is a required keyword (although it does not have to be the first keyword in the connection string). If a server name is not passed to the keyword, an attempt is made to connect to the local instance.
The value passed to Server can be the name of a [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] instance, or the IP address of the instance. You can optionally specify a port number (for example, `sqlsrv:server=(local),1033`).
Beginning in version 3.0 of the [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] you can also specify a LocalDB instance with `server=(localdb)\instancename`. For more information, see [PHP Driver for SQL Server Support for LocalDB](../../connect/php/php-driver-for-sql-server-support-for-localdb.md).|
|TraceFile|String|Specifies the path for the file used for trace data.|No value set.|
|TraceOn|1 or **true** to enable tracing.
0 or **false** to disable tracing.|Specifies whether ODBC tracing is enabled (1 or **true**) or disabled (0 or **false**) for the connection being established.|**false** (0)|
|TransactionIsolation|The SQLSRV driver uses the following values:
SQLSRV_TXN_READ_UNCOMMITTED
SQLSRV_TXN_READ_COMMITTED
SQLSRV_TXN_REPEATABLE_READ
SQLSRV_TXN_SNAPSHOT
SQLSRV_TXN_SERIALIZABLE
The PDO_SQLSRV driver uses the following values:
PDO::SQLSRV_TXN_READ_UNCOMMITTED
PDO::SQLSRV_TXN_READ_COMMITTED
PDO::SQLSRV_TXN_REPEATABLE_READ
PDO::SQLSRV_TXN_SNAPSHOT
PDO::SQLSRV_TXN_SERIALIZABLE|Specifies the transaction isolation level.
For more information about transaction isolation, see [SET TRANSACTION ISOLATION LEVEL](http://go.microsoft.com/fwlink/?LinkID=191497) in the SQL Server documentation.|SQLSRV_TXN_READ_COMMITTED
or
PDO::SQLSRV_TXN_READ_COMMITTED|
|TransparentNetworkIPResolution|**Enabled** or **Disabled**|Affects the connection sequence when the first resolved IP of the hostname does not respond and there are multiple IPs associated with the hostname.
It interacts with MultiSubnetFailover to provide different connection sequences. For more information, see [Using Transparent Network IP Resolution](https://docs.microsoft.com/en-us/sql/connect/odbc/using-transparent-network-ip-resolution).|Enabled|
|TrustServerCertificate|1 or **true** to trust certificate.
0 or **false** to not trust certificate.|Specifies whether the client should trust (1 or **true**) or reject (0 or **false**) a self-signed server certificate.|**false** (0)|
-|UID
(not supported in the PDO_SQLSRV driver)|String|Specifies the User ID to be used when connecting with SQL Server Authentication3.|No value set.|
+|UID
(not supported in the PDO_SQLSRV driver)|String|Specifies the User ID to be used when connecting with SQL Server Authentication4.|No value set.|
|WSID|String|Specifies the name of the computer for tracing.|No value set.|
+
+1. The `ConnectionPooling` attribute cannot be used to enable/disable connection pooling in Linux and Mac. See [Connection Pooling (Microsoft Drivers for PHP for SQL Server)](../../connect/php/connection-pooling-microsoft-drivers-for-php-for-sql-server.md).
+
+2. All queries executed on the established connection are made to the database that is specified by the *Database* attribute. However, if the user has the appropriate permissions, data in other databases can be accessed by using a fully qualified name. For example, if the *master* database is set with the *Database* connection attribute, it is still possible to execute a Transact-SQL query that accesses the *AdventureWorks.HumanResources.Employee* table by using the fully qualified name.
-1. All queries executed on the established connection will be made to the database that is specified by the *Database* attribute. However, data in other databases can be accessed by using a fully-qualified name if the user has the appropriate permissions. For example, if the *master* database is set with the *Database* connection attribute, it is still possible to execute a Transact-SQL query that accesses the *AdventureWorks.HumanResources.Employee* table by using the fully-qualified name.
-
-2. Enabling *Encryption* can impact the performance of some applications due to the computational overhead required to encrypt data.
+3. Enabling *Encryption* can impact the performance of some applications due to the computational overhead required to encrypt data.
-3. The *UID* and *PWD* attributes must both be set when connecting with [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] Authentication.
+4. The *UID* and *PWD* attributes must both be set when connecting with [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] Authentication.
Many of the supported keys are ODBC connection string attributes. For information about ODBC connection strings, see [Using Connection String Keywords with SQL Native Client](http://go.microsoft.com/fwlink/?LinkId=105504).
diff --git a/docs/connect/php/system-requirements-for-the-php-sql-driver.md b/docs/connect/php/system-requirements-for-the-php-sql-driver.md
index 4eaac07cfc2..63ae26541f6 100644
--- a/docs/connect/php/system-requirements-for-the-php-sql-driver.md
+++ b/docs/connect/php/system-requirements-for-the-php-sql-driver.md
@@ -1,7 +1,7 @@
---
title: "System Requirements for the PHP SQL Driver | Microsoft Docs"
ms.custom: ""
-ms.date: "01/19/2017"
+ms.date: "07/12/2017"
ms.prod: "sql-non-specified"
ms.reviewer: ""
ms.suite: ""
@@ -26,6 +26,7 @@ To access data in a SQL Server or Azure SQL Database using the [!INCLUDE[ssDrive
|Microsoft Drivers for PHP for SQL Server Version|Supported PHP Versions|
|----------------------------------------------------|--------------------------|
+|4.3|PHP 7.0 and PHP 7.1|
|4.0|PHP 7.0|
|3.2|PHP 5.6.4+ or
PHP 5.5.16+ or
PHP 5.4.32|
|3.1|PHP 5.5.16+ or
PHP 5.4.32|
@@ -41,31 +42,49 @@ To access data in a SQL Server or Azure SQL Database using the [!INCLUDE[ssDrive
> [!NOTE]
> Microsoft provides support only for IIS.
-- The correct version of the Microsoft ODBC Driver for SQL Server or SQL Server Native Client is required on the computer where PHP is running. Note that if you are using a 64-bit operating system, the x86 version will be installed with the x64 installer (do not use the x86 version of the installer unless you are using a 32-bit operating system).
+- The correct version of the Microsoft ODBC Driver for SQL Server or SQL Server Native Client is required on the computer where PHP is running. If you are using a 64-bit operating system, the ODBC 64-bit installer installs both 32-bit and 64-bit ODBC drivers. If you use a 32-bit operating system, use the ODBC x86 installer.
|Microsoft Drivers for PHP for SQL Server Version|Version of Microsoft ODBC Driver for SQL Server or SQL Server Native Client|
-|----------------------------------------------------|--------------------------|
-|4.0|Microsoft ODBC Driver 11 for SQL Server or Microsoft ODBC Driver 13 for SQL Server. To download the x64 package for 64-bit operating systems, or x86 package for 32-bit operating systems, see the [Microsoft ODBC Driver 11 for SQL Server page](http://www.microsoft.com/download/details.aspx?id=36434) or [Microsoft ODBC Driver 13 for SQL Server page](https://www.microsoft.com/download/details.aspx?id=50420)|
-|3.2 or
3.1|Microsoft ODBC Driver 11 for SQL Server. To download the x64 package for 64-bit operating systems, or x86 package for 32-bit operating systems, see the [Microsoft ODBC Driver 11 for SQL Server page](http://www.microsoft.com/download/details.aspx?id=36434)|
+|----------------------------------------------------|--------------------------|
+|4.3|Microsoft ODBC Driver 11 for SQL Server or Microsoft ODBC Driver 13.1 for SQL Server. To download Microsoft ODBC Driver, see the [Microsoft ODBC Driver 11 for SQL Server page](http://www.microsoft.com/download/details.aspx?id=36434) or [Microsoft ODBC Driver 13.1 for SQL Server page](https://www.microsoft.com/en-us/download/details.aspx?id=53339)|
+|4.0|Microsoft ODBC Driver 11 for SQL Server or Microsoft ODBC Driver 13 for SQL Server. To download Microsoft ODBC Driver, see the [Microsoft ODBC Driver 11 for SQL Server page](http://www.microsoft.com/download/details.aspx?id=36434) or [Microsoft ODBC Driver 13 for SQL Server page](https://www.microsoft.com/download/details.aspx?id=50420)|
+|3.2 or
3.1|Microsoft ODBC Driver 11 for SQL Server. To download Microsoft ODBC Driver, see the [Microsoft ODBC Driver 11 for SQL Server page](http://www.microsoft.com/download/details.aspx?id=36434)|
|3.0|Microsoft [!INCLUDE[ssSQL11](../../includes/sssql11_md.md)] Native Client. You can download Microsoft [!INCLUDE[ssSQL11](../../includes/sssql11_md.md)] Native Client from the [SQL Server 2012 feature pack page](http://go.microsoft.com/fwlink/?LinkID=236805)|
|2.0|Microsoft [!INCLUDE[ssKilimanjaro](../../includes/sskilimanjaro_md.md)] Native Client:
[Download the X86 package](http://go.microsoft.com/fwlink/?LinkID=188400&clcid=0x409) for 32-bit operating systems
[Download the X64 package](http://go.microsoft.com/fwlink/?LinkID=188401&clcid=0x409) for 64-bit operating systems|
-If you are using the SQLSRV driver, [sqlsrv_client_info](../../connect/php/sqlsrv-client-info.md) will return information about which version of [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] Native Client or Microsoft ODBC Driver for SQL Server is being used by the [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)]. If you are using the PDO_SQLSRV driver, you can use [PDO::getAttribute](../../connect/php/pdo-getattribute.md) to discover the version.
+If you are using the SQLSRV driver, [sqlsrv_client_info](../../connect/php/sqlsrv-client-info.md) returns information about which version of [!INCLUDE[ssNoVersion](../../includes/ssnoversion_md.md)] Native Client or Microsoft ODBC Driver for SQL Server is being used by the [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)]. If you are using the PDO_SQLSRV driver, you can use [PDO::getAttribute](../../connect/php/pdo-getattribute.md) to discover the version.
## Database Versions
-- Azure SQL Databases are supported. For information see [Connecting to Microsoft Azure SQL Database](../../connect/php/connecting-to-microsoft-azure-sql-database.md).
+- Azure SQL Databases are supported. For information, see [Connecting to Microsoft Azure SQL Database](../../connect/php/connecting-to-microsoft-azure-sql-database.md).
-- [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] version 3.1 and later support SQL Server 2008 and later
+- [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] version 4.3 support SQL Server 2008 R2 and later
+- [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] version 4.0 support SQL Server 2008 and later
+- [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] version 3.1 support SQL Server 2008 and later
- [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)] version 2.0 and 3.0 support SQL Server 2005 and later
## Driver Versions
This section lists the drivers that are included with each version of the [!INCLUDE[ssDriverPHP](../../includes/ssdriverphp_md.md)].
-Follow the installation instructions in [Loading the PHP SQL Driver](../../connect/php/loading-the-php-sql-driver.md) to configure the driver for use with the PHP runtime.
+To configure the driver for use with the PHP runtime, follow the installation instructions in [Loading the PHP SQL Driver](../../connect/php/loading-the-php-sql-driver.md).
+
+**Microsoft Drivers 4.3 for PHP for SQL Server:**
+
+On Windows, for 4.3 the following versions of the driver are installed:
+
+|Driver file|PHP version|Thread safe?|Use with PHP .dll|
+|---------------|---------------|----------------|---------------------|
+|php_sqlsrv_7_nts_x86.dll
php_pdo_sqlsrv_7_nts_x86.dll|7.0|no|32-bit php7.dll|
+|php_sqlsrv_7_ts_x86.dll
php_pdo_sqlsrv_7_ts_x86.dll|7.0|yes|32-bit php7ts.dll|
+|php_sqlsrv_7_nts_x64.dll
php_pdo_sqlsrv_7_nts_x64.dll|7.0|no|64-bit php7.dll|
+|php_sqlsrv_7_ts_x64.dll
php_pdo_sqlsrv_7_ts_x64.dll|7.0|yes|64-bit php7ts.dll|
+|php_sqlsrv_71_nts_x86.dll
php_pdo_sqlsrv_71_nts_x86.dll|7.1|no|32-bit php7.dll|
+|php_sqlsrv_71_ts_x86.dll
php_pdo_sqlsrv_71_ts_x86.dll|7.1|yes|32-bit php7ts.dll|
+|php_sqlsrv_71_nts_x64.dll
php_pdo_sqlsrv_71_nts_x64.dll|7.1|no|64-bit php7.dll|
+|php_sqlsrv_71_ts_x64.dll
php_pdo_sqlsrv_71_ts_x64.dll|7.1|yes|64-bit php7ts.dll|
**Microsoft Drivers 4.0 for PHP for SQL Server:**
@@ -123,7 +142,22 @@ On the supported versions of Linux, the appropriate version of sqlsrv and/or pdo
If the name of the driver file contains "vc9", it should be used with a PHP version compiled with Visual C++ 9.0.
## Operating Systems
Supported operating systems for the versions of the driver are as follows:
-- 4.0 (for Windows):
+
+- 4.3:
+ - Windows Server 2012
+ - Windows Server 2012 R2
+ - Windows Server 2016
+ - Windows 8
+ - Windows 8.1
+ - Windows 10
+ - Ubuntu 15.10 (64-bit)
+ - Ubuntu 16.04 (64-bit)
+ - Debian 8 (64-bit)
+ - Red Hat Enterprise Linux 7 (64-bit)
+ - Mac OS Sierra (64-bit)
+ - Mac OS El Capitan (64-bit)
+
+- 4.0:
- Windows Server 2008 SP2
- Windows Server 2008 R2 SP1
- Windows Server 2012
@@ -132,14 +166,13 @@ Supported operating systems for the versions of the driver are as follows:
- Windows 7 SP1
- Windows 8
- Windows 8.1
- - Windows 10
-- 4.0 (for Linux):
+ - Windows 10
- Ubuntu 15.04 (64-bit)
- Ubuntu 16.04 (64-bit)
- Red Hat Enterprise Linux 7 (64-bit)
-- 3.2 and 3.1 :
+- 3.2 and 3.1:
- Windows Server 2008 R2 SP1
- Windows Vista SP2
- Windows Server 2008 SP2
@@ -150,7 +183,7 @@ Supported operating systems for the versions of the driver are as follows:
- Windows 8.1
-- 3.0 :
+- 3.0:
- Windows Server 2008 R2 SP1
- Windows Vista SP2
- Windows Server 2008 SP2
diff --git a/docs/database-engine/availability-groups/windows/TOC.md b/docs/database-engine/availability-groups/windows/TOC.md
index 5ba44665ade..ef1dc6ba69d 100644
--- a/docs/database-engine/availability-groups/windows/TOC.md
+++ b/docs/database-engine/availability-groups/windows/TOC.md
@@ -15,6 +15,7 @@
# Concepts
## [Automatic seeding](automatically-initialize-always-on-availability-group.md)
+## [Automatic seeding for secondary replicas](automatic-seeding-secondary-replicas.md)
## [Availability group policies](always-on-policies-for-operational-issues-always-on-availability.md)
## [Availability modes](availability-modes-always-on-availability-groups.md)
## [Backup on secondary](active-secondaries-backup-on-secondary-replicas-always-on-availability-groups.md)
diff --git a/docs/database-engine/availability-groups/windows/automatic-seeding-secondary-replicas.md b/docs/database-engine/availability-groups/windows/automatic-seeding-secondary-replicas.md
new file mode 100644
index 00000000000..0b7b6a23f38
--- /dev/null
+++ b/docs/database-engine/availability-groups/windows/automatic-seeding-secondary-replicas.md
@@ -0,0 +1,226 @@
+---
+title: "Automatic seeding for secondary replicas (SQL Server) | Microsoft Docs"
+description: "Use automatic seeding to initialize secondary replicas."
+services: data-lake-analytics
+ms.custom: ""
+ms.date: "06/22/2017"
+ms.prod: "sql-server-2016"
+ms.reviewer: ""
+ms.suite: ""
+ms.technology:
+- "dbe-high-availability"
+ms.tgt_pltfrm: ""
+ms.topic: "article"
+helpviewer_keywords:
+- "Automatic seeding [SQL Server], secondary replica"
+ms.assetid:
+caps.latest.revision:
+author: "MikeRayMSFT"
+ms.author: "mikeray"
+manager: "jhubbard"
+---
+# Automatic seeding for secondary replicas
+
+[!INCLUDE [tsql-appliesto-ss2016-xxxx-xxxx-xxx_md](../../../includes/tsql-appliesto-ss2016-xxxx-xxxx-xxx-md.md)]
+
+In SQL Server 2012 and 2014, the only way to initialize a secondary replica in an availability group is to use backup, copy, and restore. SQL Server 2016 introduces a new feature to initialize a secondary replica – *automatic seeding*. Automatic seeding uses the log stream transport to stream the backup using VDI to the secondary replica for each database of the availability group using the configured endpoints. This new feature can be used either during the initial creation of an availability group or when a database is added to one. Automatic seeding is in all editions of SQL Server that support Always On availability groups, and can be used with both traditional availability groups and [distributed availability groups](distributed-availability-groups.md).
+
+## Considerations
+
+Considerations for using automatic seeding include:
+
+* [Performance and transaction log impact on the primary replica](#performance-and-transaction-log-impact-on-the-primary-replica)
+* [Disk layout](#disk-layout)
+* [Security](#security)
+
+
+### Performance and transaction log impact on the primary replica
+
+Automatic seeding may or may not practical to initialize a secondary replica, depending on the size of the database, network speed, and distance between the primary and secondary replicas. For example, given:
+
+* The database size is 5 TB
+* The network speed is 1Gb/sec
+* The distance between the two sites is 1000 miles
+
+A 1Gb/sec network can provide sustained throughput of 125 MB/sec if the full bandwidth is available. In this example, automatic seeding would take just over 11 hours. In practice, the automatic seeding process is somewhat slower, as network signals degrade over longer distances and the link is usually shared with other resources on the network. During seeding, the transaction log on the database at the primary replica will continue to grow and cannot be truncated until automatic seeding of that database is complete. The transaction log can then be truncated using a transaction log backup.
+
+Automatic seeding is a single-threaded process that can handle up to five databases. This may affect performance, especially if the availability group has more than one database.
+
+Compression can be used for automatic seeding, but it is disabled by default. Turning on compression reduces network bandwidth and possibly speeds up the process, but the tradeoff is additional processor overhead. To use compression during automatic seeding, enable trace flag 9567 - see [Tune compression for availability group](tune-compression-for-availability-group.md).
+
+### Disk layout
+
+The folder where the database will be created by automatic seeding must already exist and be the same as the path on the primary replica.
+
+### Security
+
+Security permissions vary depending on the type of replica being initialized:
+
+* For a traditional availability group, permissions must be granted to the availability group on the secondary replica as it is joined to the availability group. In Transact-SQL, use the command ALTER AVAILABILITY GROUP [AGName] GRANT CREATE ANY DATABASE.
+* For a distributed availability group where the replica’s databases that are being created are on the primary replica of the second availability group, no extra permissions are required as it is already a primary.
+* For a secondary replica on the second availability group of a distributed availability group, you must use the command ALTER AVAILABILITY GROUP [2ndAGName] GRANT CREATE ANY DATABASE. This secondary replica will be seeded from the primary of the second availability group.
+
+## Create an availability group with automatic seeding
+
+You create an availability group using automatic seeding with either Transact-SQL or SQL Server Management Studio (SSMS, version 17 or later). To use the Availability Group Wizard in SSMS, follow [these instructions](use-the-availability-group-wizard-sql-server-management-studio.md) - when you get to Step 9, you will see automatic seeding as the first, and default, option.
+
+![Select initial data synchronization][1]
+
+The following example creates an availability group using Transact-SQL. See also the topic [Create an Availability Group (Transact-SQL)](create-an-availability-group-transact-sql.md). Seeding is enabled on a secondary replica by setting the SEEDING_MODE option to AUTOMATIC. The default behavior is MANUAL, which is the pre-SQL Server 2016 behavior requiring a backup of the database to be made on the primary replica, a copy of the backup file to the secondary replica, and a restore of the backup WITH NORECOVERY.
+
+```
+CREATE AVAILABILITY GROUP [AGName]
+ FOR DATABASE db1
+ REPLICA ON N'Primary_Replica'
+WITH (
+ ENDPOINT_URL = N'TCP://Primary_Replica.Contoso.com:5022',
+ FAILOVER_MODE = AUTOMATIC,
+ AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
+),
+ N'Secondary_Replica' WITH (
+ ENDPOINT_URL = N'TCP://Secondary_Replica.Contoso.com :5022',
+ FAILOVER_MODE = AUTOMATIC,
+ SEEDING_MODE = AUTOMATIC);
+ GO
+```
+
+Setting SEEDING_MODE on a primary replica during a CREATE AVAILABILITY GROUP statement has no effect since the primary replica already contains the main read/write copy of the database. SEEDING_MODE would only apply when another replica was made the primary and a database was added. The seeding mode can be changed later - see [Change the seeding mode of a replica](#change-the-seeding-mode-of-a-replica).
+
+On an instance that becomes a secondary replica, once the instance is joined the following message is added to the SQL Server Log:
+
+Local availability replica for availability group 'AGName' has not been granted permission to create databases, but has a SEEDING_MODE of AUTOMATIC. Use the ALTER AVAILABILITY GROUP … GRANT CREATE ANY DATABASE command to allow the creation of databases seeded by the primary availability replica.
+
+After joining, issue the following statement:
+
+```
+ALTER AVAILABILITY GROUP [AGName] GRANT CREATE ANY DATABASE
+ GO
+````
+
+> [!NOTE]
+> There is currently a known issue as of SQL Server 2016 SP1 CU2 where a secondary replica must wait three minutes to allow the AG to seed the database before executing an ALTER AVAILABILITY GROUP... statement. Before that time elapses, the statement will not return an error, rather it will indicate success. This is also a known issue. These issues will be fixed in a future update to SQL Server. As a workaround, insert a WAITFOR statement:
+
+```
+WAITFOR DELAY '00:03:15';
+ALTER AVAILABILITY GROUP [AGName] GRANT CREATE ANY DATABASE;
+GO
+```
+
+If successful, the database(s) are automatically created on the secondary replica with a state of either:
+
+* SYNCHRONIZED if the secondary replica is configured to be synchronous and the data is completely synchronized.
+* SYNCHRONIZING if the secondary replica is configured with asynchronous data movement, or when configured with synchronous but not yet synchronized with the primary replica.
+
+
+In addition to the [Dynamic Management Views](#dynamic-management-views) described below, the start and completion of automatic seeding can be seen in the SQL Server Log:
+
+![SQL server log][2]
+
+## Combine backup and restore with automatic seeding
+
+It is possible to combine the traditional backup, copy, and restore with automatic seeding. In this case, first restore the database on a secondary replica including all available transaction logs. Next, enable automatic seeding when creating the availability group to "catch up" the secondary replica’s database, as if a tail-log backup were restored (see [Tail-Log Backups (SQL Server)](../../../relational-databases/backup-restore/tail-log-backups-sql-server.md)).
+
+## Add a database to an availability group with automatic seeding
+
+You can add a database to an availability group using automatic seeding using Transact-SQL or SQL Server Management Studio (SSMS, version 17 or later).
+If the secondary replica used automatic seeding when it was added to the availability group, nothing additional needs to be done. If backup, copy, and restore was used, first change the seeding mode (see next section) and then when adding the database use the GRANT statement - see [Availability Group - Add a Database](availability-group-add-a-database.md).
+
+## Change the seeding mode of a replica
+
+A replica’s seeding mode can be altered after the availability group is created, so automatic seeding can be enabled or disabled. Enabling automatic seeding after creation allows a database to be added to the availability group using automatic seeding if it was created with backup, copy, and restore. For example:
+
+```
+ALTER AVAILABILITY GROUP [AGName]
+ MODIFY REPLICA ON 'Replica_Name'
+ WITH (SEEDING_MODE = AUTOMATIC)
+```
+
+To disable automatic seeding, use a value of MANUAL.
+
+## Prevent automatic seeding after an availability group is created
+
+If you do not want to disable automatic seeding completely for a secondary replica, but want to temporarily prevent the secondary replica from being able to automatically create databases, deny the availability group CREATE permission. This is the case when a new database is added to the availability group, but the availability group should not be allowed to create the database on a secondary replica.
+
+```
+ALTER AVAILABILITY GROUP [AGName] DENY CREATE ANY DATABASE
+GO
+```
+
+## Monitor automatic seeding
+
+There are four ways to monitor and troubleshoot automatic seeding:
+
+* [SQL Server Log](#sql-server-log) as already described
+* [Dynamic management views](#dynamic-management-views)
+* [Backup history tables](#backup-history-tables)
+* [Extended events](#extended-events)
+
+### Dynamic Management Views
+
+There are two dynamic management views (DMVs) for monitoring seeding: sys.dm_hadr_automatic_seeding and sys.dm_hadr_physical_seeding_stats.
+
+* sys.dm_hadr_automatic_seeding contains the general status of automatic seeding, and retains the history for each time it is executed (whether successful or not). The column current_state will have either a value of COMPLETED or FAILED. If the value is FAILED, use the value in failure_state_desc to help in diagnosing the problem. You may need to combine that with what it in the [SQL Server Log](#sql-server-log) to see what went wrong. This DMV is populated on the primary replica and all secondary replicas.
+
+* sys.dm_hadr_physical_seeding_stats shows the status of the automatic seeding operation as it is executing. As with sys.dm_hadr_automatic_seeding, this will show values on both the primary and secondary replicas, but this history is not stored. The values are for the current execution only, and will not be retained. Columns of interest include start_time_utc, end_time_utc, estimate_time_complete_utc, total_disk_io_wait_time_ms, total_network_wait_time_ms, and if the seeding operation fails, failure_message.
+
+### Backup history tables
+
+Automatic seeding also puts entries into the `msdb` tables which store the history for backups and restores. On the secondary replica which is receiving automatic seeding, the `backupmediafamily` table's physical_device_name column has a GUID for its value, and the corresponding entry in `backupset` has the name of the primary replica for server_name and machine_name.
+
+### Extended events
+
+Automatic seeding adds new extended events for tracking state change, failures, and performance statistics during initialization.
+For example, the following script creates an extended events session that captures events related to automatic seeding.
+
+```
+CREATE EVENT SESSION [AG_autoseed] ON SERVER
+ ADD EVENT sqlserver.hadr_automatic_seeding_state_transition,
+ ADD EVENT sqlserver.hadr_automatic_seeding_timeout,
+ ADD EVENT sqlserver.hadr_db_manager_seeding_request_msg,
+ ADD EVENT sqlserver.hadr_physical_seeding_backup_state_change,
+ ADD EVENT sqlserver.hadr_physical_seeding_failure,
+ ADD EVENT sqlserver.hadr_physical_seeding_forwarder_state_change,
+ ADD EVENT sqlserver.hadr_physical_seeding_forwarder_target_state_change,
+ ADD EVENT sqlserver.hadr_physical_seeding_progress,
+ ADD EVENT sqlserver.hadr_physical_seeding_restore_state_change,
+ ADD EVENT sqlserver.hadr_physical_seeding_submit_callback
+ ADD TARGET package0.event_file(SET filename=N’autoseed.xel’,max_file_size=(5),max_rollover_files=(4))
+ WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
+GO
+
+ALTER EVENT SESSION AlwaysOn_autoseed ON SERVER STATE=START
+GO
+```
+
+The following table lists extended events related to automatic seeding.
+
+|Name|Description|
+|----|-----------|
+|hadr_db_manager_seeding_request_msg|Seeding request message.|
+|hadr_physical_seeding_backup_state_change|Physical seeding backup side state change.|
+|hadr_physical_seeding_restore_state_change|Physical seeding restore side state change.|
+|hadr_physical_seeding_forwarder_state_change|Physical seeding forwarder side state change.|
+|hadr_physical_seeding_forwarder_target_state_change|Physical seeding forwarder target side state change.|
+|hadr_physical_seeding_submit_callback|Physical seeding submit callback event.|
+|hadr_physical_seeding_failure|Physical seeding failure event.|
+|hadr_physical_seeding_progress|Physical seeding progress event.|
+|hadr_physical_seeding_schedule_long_task_failure|Physical seeding schedule long task failure event.|
+|hadr_automatic_seeding_start|Occurs when an automatic seeding operation is submitted.|
+|hadr_automatic_seeding_state_transition|Occurs when an automatic seeding operation changes state.|
+|hadr_automatic_seeding_success|Occurs when an automatic seeding operation succeeds.|
+|hadr_automatic_seeding_failure|Occurs when an automatic seeding operation fails.|
+|hadr_automatic_seeding_timeout|Occurs when an automatic seeding operation times out.|
+
+## See also
+
+[ALTER AVAILABILITY GROUP (Transact-SQL)](/sql/t-sql/statements/alter-availability-group-transact-sql)
+
+[CREATE AVAILABILITY GROUP (Transact-SQL)](https://msdn.microsoft.com/library/ff878399.aspx)
+
+[Always On Availability Groups Troubleshooting and Monitoring Guide](http://technet.microsoft.com/library/dn135328.aspx)
+
+> This content written by [Allan Hirt](http://mvp.microsoft.com/en-us/PublicProfile/4025254?fullName=Allan%20Hirt), Microsoft Most Valued Professional.
+
+
+[1]: ./media/auto-seed-new-availability-group.png
+[2]: ./media/auto-seed-sql-server-log.png
diff --git a/docs/database-engine/availability-groups/windows/media/auto-seed-new-availability-group.png b/docs/database-engine/availability-groups/windows/media/auto-seed-new-availability-group.png
new file mode 100644
index 00000000000..2443e02f7cf
Binary files /dev/null and b/docs/database-engine/availability-groups/windows/media/auto-seed-new-availability-group.png differ
diff --git a/docs/database-engine/availability-groups/windows/media/auto-seed-sql-server-log.png b/docs/database-engine/availability-groups/windows/media/auto-seed-sql-server-log.png
new file mode 100644
index 00000000000..8e2362ca3b4
Binary files /dev/null and b/docs/database-engine/availability-groups/windows/media/auto-seed-sql-server-log.png differ
diff --git a/docs/docfx.json b/docs/docfx.json
index 5c976f0a6b1..34ca18a8e58 100644
--- a/docs/docfx.json
+++ b/docs/docfx.json
@@ -35,6 +35,7 @@
"layout": "Conceptual",
"breadcrumb_path": "~/breadcrumb/toc.yml",
"contributors_to_exclude": ["hexiaokai", "openpublishingbuild","sudeepku","saldana"],
+ "searchScope": ["sql"],
"_op_documentIdPathDepotMapping": {
"linux/": {
"depot_name": "SQL.linux",
diff --git a/docs/relational-databases/polybase/polybase-t-sql-objects.md b/docs/relational-databases/polybase/polybase-t-sql-objects.md
index 8e30ca02caa..f1465a338d1 100644
--- a/docs/relational-databases/polybase/polybase-t-sql-objects.md
+++ b/docs/relational-databases/polybase/polybase-t-sql-objects.md
@@ -2,7 +2,7 @@
title: "PolyBase T-SQL objects | Microsoft Docs"
ms.custom:
- "SQL2016_New_Updated"
-ms.date: "03/08/2016"
+ms.date: "07/13/2017"
ms.prod: "sql-server-2016"
ms.reviewer: ""
ms.suite: ""
@@ -21,7 +21,7 @@ ms.author: "barbkess"
manager: "jhubbard"
---
# PolyBase T-SQL objects
-[!INCLUDE[tsql-appliesto-ss2016-xxxx-xxxx-xxx_md](../../includes/tsql-appliesto-ss2016-xxxx-xxxx-xxx-md.md)]
+[!INCLUDE[tsql-appliesto-ss2016-xxxx-asdw-pdw_md](../../includes/tsql-appliesto-ss2016-xxxx-asdw-pdw-md.md)]
To use PolyBase, you must create external tables to reference your external data.
diff --git a/docs/relational-databases/sql-server-configuration-manager.md b/docs/relational-databases/sql-server-configuration-manager.md
index d0ff218c132..26b7c358796 100644
--- a/docs/relational-databases/sql-server-configuration-manager.md
+++ b/docs/relational-databases/sql-server-configuration-manager.md
@@ -1,44 +1,44 @@
----
-title: "SQL Server Configuration Manager | Microsoft Docs"
-ms.custom:
- - "SQL2016_New_Updated"
-ms.date: "02/25/2016"
-ms.prod: "sql-server-2016"
-ms.reviewer: ""
-ms.suite: ""
-ms.technology:
- - "database-engine"
-ms.tgt_pltfrm: ""
-ms.topic: "article"
-helpviewer_keywords:
- - "protocols [SQL Server], managing"
- - "network protocols [SQL Server], managing"
- - "Client Network Utility"
- - "accounts [SQL Server]"
- - "SQL Server Configuration Manager"
- - "Server Network Utility"
- - "accounts [SQL Server], services"
- - "services [SQL Server], managing"
- - "tools [SQL Server], SQL Server Configuration Manager"
- - "configuration manager [SQL Server]"
-ms.assetid: e6beaea4-164c-4078-95ae-b9e28b0aefe8
-caps.latest.revision: 58
-author: "BYHAM"
-ms.author: "rickbyh"
-manager: "jhubbard"
----
-# SQL Server Configuration Manager
-
- > For content related to previous versions of SQL Server, see [SQL Server Configuration Manager](https://msdn.microsoft.com/en-US/library/ms174212(SQL.120).aspx).
-
+---
+title: "SQL Server Configuration Manager | Microsoft Docs"
+ms.custom:
+ - "SQL2016_New_Updated"
+ms.date: "07/13/2017"
+ms.prod: "sql-server-2016"
+ms.reviewer: ""
+ms.suite: ""
+ms.technology:
+ - "database-engine"
+ms.tgt_pltfrm: ""
+ms.topic: "article"
+helpviewer_keywords:
+ - "protocols [SQL Server], managing"
+ - "network protocols [SQL Server], managing"
+ - "Client Network Utility"
+ - "accounts [SQL Server]"
+ - "SQL Server Configuration Manager"
+ - "Server Network Utility"
+ - "accounts [SQL Server], services"
+ - "services [SQL Server], managing"
+ - "tools [SQL Server], SQL Server Configuration Manager"
+ - "configuration manager [SQL Server]"
+ms.assetid: e6beaea4-164c-4078-95ae-b9e28b0aefe8
+caps.latest.revision: 58
+author: "BYHAM"
+ms.author: "rickbyh"
+manager: "jhubbard"
+---
+# SQL Server Configuration Manager
+
+ > For content related to previous versions of SQL Server, see [SQL Server Configuration Manager](https://msdn.microsoft.com/en-US/library/ms174212(SQL.120).aspx).
+
[!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] Configuration Manager is a tool to manage the services associated with [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)], to configure the network protocols used by [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)], and to manage the network connectivity configuration from [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] client computers. [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] Configuration Manager is a [!INCLUDE[msCoName](../includes/msconame-md.md)] Management Console snap-in that is available from the Start menu, or can be added to any other [!INCLUDE[msCoName](../includes/msconame-md.md)] Management Console display. [!INCLUDE[msCoName](../includes/msconame-md.md)] Management Console (**mmc.exe**) uses the **SQLServerManager\.msc** file (such as **SQLServerManager13.msc** for [!INCLUDE[ssSQL15](../includes/sssql15-md.md)]) to open Configuration Manager. Here are the paths to the last four versions when Windows in installed on the C drive.
|||
-|-|-|
+|-|-|
+|[!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] 2017|C:\Windows\SysWOW64\SQLServerManager14.msc|
|[!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] 2016|C:\Windows\SysWOW64\SQLServerManager13.msc|
|[!INCLUDE[ssSQL14](../includes/sssql14-md.md)]|C:\Windows\SysWOW64\SQLServerManager12.msc|
-|[!INCLUDE[ssSQL11](../includes/sssql11-md.md)]|C:\Windows\SysWOW64\SQLServerManager11.msc|
-|[!INCLUDE[ssKatmai](../includes/sskatmai-md.md)]|C:\Windows\SysWOW64\SQLServerManager10.msc|
+|[!INCLUDE[ssSQL11](../includes/sssql11-md.md)]|C:\Windows\SysWOW64\SQLServerManager11.msc|
> [!NOTE]
> Because [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] Configuration Manager is a snap-in for the [!INCLUDE[msCoName](../includes/msconame-md.md)] Management Console program and not a stand-alone program, [!INCLUDE[ssNoVersion](../includes/ssnoversion-md.md)] Configuration Manager does not appear as an application in newer versions of Windows.
@@ -94,4 +94,4 @@ manager: "jhubbard"
[Prevent Automatic Startup of an Instance of SQL Server (SQL Server Configuration Manager)](../database-engine/configure-windows/scm-services-prevent-automatic-startup-of-an-instance.md)
-
+
diff --git a/docs/relational-databases/system-dynamic-management-views/sys-dm-db-column-store-row-group-physical-stats-transact-sql.md b/docs/relational-databases/system-dynamic-management-views/sys-dm-db-column-store-row-group-physical-stats-transact-sql.md
index 1c752285567..0391047e6a1 100644
--- a/docs/relational-databases/system-dynamic-management-views/sys-dm-db-column-store-row-group-physical-stats-transact-sql.md
+++ b/docs/relational-databases/system-dynamic-management-views/sys-dm-db-column-store-row-group-physical-stats-transact-sql.md
@@ -44,10 +44,10 @@ manager: "jhubbard"
|**total_rows**|**bigint**|Number of rows physical stored in the row group. For compressed row groups, this includes the rows that are marked deleted.|
|**deleted_rows**|**bigint**|Number of rows physically stored in a compressed row group that are marked for deletion.
0 for row groups that are in the delta store.|
|**size_in_bytes**|**bigint**|Combined size, in bytes, of all the pages in this row group. This size does not include the size required to store metadata or shared dictionaries.|
-|**transition_to_compressed_state**|tinyint|Shows how this rowgroup got moved from the deltastore to a compressed state in the columnstore.
1- NOT_APPLICABLE
2 – INDEX_BUILD
3 – TUPLE_MOVER
4 – REORG_NORMAL
5 – REORG_FORCED
6 - BULKLOAD
7 - MERGE|
-|**transition_to_compressed_state_desc**|nvarchar(60)|NOT_APPLICABLE – the operation does not apply to the deltastore. Or, the rowgroup was compressed prior to upgrading to [!INCLUDE[ssSQL15](../../includes/sssql15-md.md)] in which case the history is not preserved.
INDEX_BUILD – An index create or index rebuild compressed the rowgroup.
TUPLE_MOVER – The tuple mover running in the background compressed the rowgroup. This happens after the rowgroup changes state from OPEN to CLOSED.
REORG_NORMAL – The reorganization operation, ALTER INDEX … REORG, moved the CLOSED rowgroup from the deltastore to the columnstore. This occurred before the tuple-mover had time to move the rowgroup.
REORG_FORCED – This rowgroup was open in the deltastore and was forced into the columnstore before it had a full number of rows.
BULKLOAD – A bulk load operation compressed the rowgroup directly without using the deltastore.
MERGE – A merge operation consolidated one or more rowgroups into this rowgroup and then performed the columnstore compression.|
|**trim_reason**|**tinyint**|Reason that triggered the COMPRESSED row group to have less than the maximum number of rows.
0 – UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION
1 - NO_TRIM
2 - BULKLOAD
3 – REORG
4 – DICTIONARY_SIZE
5 – MEMORY_LIMITATION
6 – RESIDUAL_ROW_GROUP
7 - STATS_MISMATCH
8 - SPILLOVER|
|**trim_reason_desc**|**nvarchar(60)**|Description of *trim_reason*.
0 – UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Occurred when upgrading from the previous version of [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)].
1 - NO_TRIM: The row group was not trimmed. The row group was compressed with the maximum of 1,048,476 rows. The number of rows could be less if a subsset of rows was deleted after delta rowgroup was closed
2 – BULKLOAD: The bulk load batch size limited the number of rows.
3 – REORG: Forced compression as part of REORG command.
4 – DICTIONARY_SIZE: Dictionary size grew too big to compress all of the rows together.
5 – MEMORY_LIMITATION: Not enough available memory to compress all the rows together.
6 – RESIDUAL_ROW_GROUP: Closed as part of last row group with rows < 1 million during index build operation
STATS_MISMATCH: Only for columnstore on in-memory table. If stats incorrectly indicated >= 1 million qualified rows in the tail but we found fewer, the compressed rowgroup will have < 1 million rows
SPILLOVER: Only for columnstore on in-memory table. If tail has > 1 million qualified rows, the last batch remaining rows are compressed if the count is between 100k and 1 million|
+|**transition_to_compressed_state**|tinyint|Shows how this rowgroup got moved from the deltastore to a compressed state in the columnstore.
1- NOT_APPLICABLE
2 – INDEX_BUILD
3 – TUPLE_MOVER
4 – REORG_NORMAL
5 – REORG_FORCED
6 - BULKLOAD
7 - MERGE|
+|**transition_to_compressed_state_desc**|nvarchar(60)|NOT_APPLICABLE – the operation does not apply to the deltastore. Or, the rowgroup was compressed prior to upgrading to [!INCLUDE[ssSQL15](../../includes/sssql15-md.md)] in which case the history is not preserved.
INDEX_BUILD – An index create or index rebuild compressed the rowgroup.
TUPLE_MOVER – The tuple mover running in the background compressed the rowgroup. This happens after the rowgroup changes state from OPEN to CLOSED.
REORG_NORMAL – The reorganization operation, ALTER INDEX … REORG, moved the CLOSED rowgroup from the deltastore to the columnstore. This occurred before the tuple-mover had time to move the rowgroup.
REORG_FORCED – This rowgroup was open in the deltastore and was forced into the columnstore before it had a full number of rows.
BULKLOAD – A bulk load operation compressed the rowgroup directly without using the deltastore.
MERGE – A merge operation consolidated one or more rowgroups into this rowgroup and then performed the columnstore compression.|
|**has_vertipaq_optimization**|bit|Vertipaq optimization improves columnstore compression by rearranging the order of the rows in the rowgroup to achieve higher compression. This optimization occurs automatically in most cases. There are two cases Vertipaq optimization is not used:
a. when a delta rowgroup moves into the columnstore and there are one or more nonclustered indexes on the columnstore index - in this case Vertipaq optimization is skipped to minimizes changes to the mapping index;
b. for columnstore indexes on memory-optimized tables.
0 = No
1 = Yes|
|**generation**|bigint|Row group generation associated with this row group.|
|**created_time**|datetime2|Clock time for when this rowgroup was created.
NULL – for a columnstore index on an in-memory table.|
diff --git a/docs/t-sql/statements/create-columnstore-index-transact-sql.md b/docs/t-sql/statements/create-columnstore-index-transact-sql.md
index 2080ee5a285..16ddafef260 100644
--- a/docs/t-sql/statements/create-columnstore-index-transact-sql.md
+++ b/docs/t-sql/statements/create-columnstore-index-transact-sql.md
@@ -2,7 +2,7 @@
title: "CREATE COLUMNSTORE INDEX (Transact-SQL) | Microsoft Docs"
ms.custom:
- "SQL2016_New_Updated"
-ms.date: "06/26/2017"
+ms.date: "07/13/2017"
ms.prod: "sql-non-specified"
ms.reviewer: ""
ms.suite: ""
@@ -73,9 +73,9 @@ CREATE CLUSTERED COLUMNSTORE INDEX index_name
CREATE [NONCLUSTERED] COLUMNSTORE INDEX index_name
ON [database_name. [schema_name ] . | schema_name . ] table_name
( column [ ,...n ] )
+ [ WHERE [ AND ] ]
[ WITH ( < with_option> [ ,...n ] ) ]
- [ ON ]
- [ WHERE [ AND ] ]
+ [ ON ]
[ ; ]
::=