Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

Commit 0cf287d

Browse files
committed
Merge branch 'release-dallas' of https://github.com/MicrosoftDocs/sql-docs-pr into anosov1960-patch5
2 parents 3c4965c + 637f7a7 commit 0cf287d

31 files changed

Lines changed: 684 additions & 71 deletions

azure-sql/database/hyperscale-architecture.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ Traditional database engines centralize data management functions in a single pr
2222

2323
Hyperscale databases follow a different approach. Hyperscale separates the query processing engine, where the semantics of various data engines diverge, from the components that provide long-term storage and durability for the data. In this way, storage capacity can be smoothly scaled out as far as needed. The initially supported storage limit is 100 TB.
2424

25-
High availability and named replicas share the same storage components, so no data copy is required to spin up a new replica.
25+
All network communication among Hyperscale components uses Azure network infrastructure with built-in redundancy.
26+
27+
High availability secondary replicas and named replicas are optional compute nodes which can be added on-demand. Both share the same storage components, so no data copy is required to spin up a new replica. A geo secondary replica can be added on-demand in same or different Azure region. For data protection and redundancy, geo secondary replicas have storage components that are separate from those used by primary replica.
2628

2729
The following diagram illustrates the functional Hyperscale architecture:
2830

@@ -36,7 +38,7 @@ The compute node is where the relational engine lives. The compute node is where
3638

3739
Compute nodes have local SSD-based caches called Resilient Buffer Pool Extension (RBPEX Data Cache). RBPEX Data Cache is an intelligent low latency data cache that minimizes the need to fetch data from remote page servers.
3840

39-
Hyperscale databases have one primary compute node where the read-write workload and transactions are processed. One or more secondary compute nodes act as hot standby nodes for failover purposes. Secondary compute nodes can serve as read-only compute nodes to offload read workloads when desired. [Named replicas](service-tier-hyperscale-replicas.md#named-replica) are secondary compute nodes designed to enable massive OLTP [read-scale out](read-scale-out.md) scenarios and to improve Hybrid Transactional and Analytical Processing (HTAP) workloads.
41+
Hyperscale databases have one primary compute node where the read-write workload and transactions are processed. Up to four high availability secondary compute nodes can be added on-demand. They act as hot standby nodes for failover purposes, and may serve as read-only compute nodes to offload read workloads when desired. [Named replicas](service-tier-hyperscale-replicas.md#named-replica) are secondary compute nodes designed to enable a variety of additional OLTP [read-scale out](read-scale-out.md) scenarios and to better support Hybrid Transactional and Analytical Processing (HTAP) workloads. A [geo secondary](active-geo-replication-overview.md) compute node can be added for disaster recovery purposes and to serve as a read-only compute node to offload read workloads in a different Azure region.
4042

4143
The database engine running on Hyperscale compute nodes is the same as in other Azure SQL Database service tiers. When users interact with the database engine on Hyperscale compute nodes, the supported surface area and engine behavior are the same as in other service tiers, with the exception of [known limitations](service-tier-hyperscale.md#known-limitations).
4244

azure-sql/managed-instance/managed-instance-link-preparation.md

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Learn how to prepare your environment for using a Managed Instance
55
author: sasapopo
66
ms.author: sasapopo
77
ms.reviewer: mathoma, danil
8-
ms.date: 10/20/2022
8+
ms.date: 11/04/2022
99
ms.service: sql-managed-instance
1010
ms.subservice: data-movement
1111
ms.topic: guide
@@ -237,23 +237,30 @@ We will use SQL Agent on SQL Server to run connectivity tests from SQL Server to
237237
```sql
238238
SELECT 'DECLARE @serverName NVARCHAR(512) = N'''+ value + ''''
239239
FROM sys.dm_hadr_fabric_config_parameters
240-
WHERE PARAMETER_NAME = 'DnsRecordName'
240+
WHERE parameter_name = 'DnsRecordName'
241241
UNION
242-
SELECT 'DECLARE @node NVARCHAR(512) = N'''+ NodeName + '.' + CLUSTER + ''''
243-
FROM
244-
(SELECT REPLACE(fr.node_name, '.', '') AS NodeName, JoinCol = 1
245-
FROM sys.dm_hadr_fabric_partitions fp
246-
JOIN sys.dm_hadr_fabric_replicas fr ON fp.partition_id = fr.partition_id
247-
JOIN sys.dm_hadr_fabric_nodes fn ON fr.node_name = fn.node_name
248-
WHERE service_name like '%ManagedServer%' AND replica_role = 2) t1
242+
SELECT 'DECLARE @node NVARCHAR(512) = N'''+ NodeName + '.' + Cluster + ''''
243+
FROM
244+
(SELECT SUBSTRING(replica_address,0, CHARINDEX('\', replica_address)) as NodeName
245+
, RIGHT(service_name,CHARINDEX('/', REVERSE(service_name))-1) AppName, JoinCol = 1
246+
FROM sys.dm_hadr_fabric_partitions fp
247+
JOIN sys.dm_hadr_fabric_replicas fr ON fp.partition_id = fr.partition_id
248+
JOIN sys.dm_hadr_fabric_nodes fn ON fr.node_name = fn.node_name
249+
WHERE service_name like '%ManagedServer%' and replica_role = 2) t1
249250
LEFT JOIN
250-
(SELECT value AS CLUSTER, JoinCol = 1
251-
FROM sys.dm_hadr_fabric_config_parameters
252-
WHERE PARAMETER_NAME = 'ClusterName') t2 ON (t1.JoinCol = t2.JoinCol)
251+
(SELECT value as Cluster, JoinCol = 1
252+
FROM sys.dm_hadr_fabric_config_parameters
253+
WHERE parameter_name = 'ClusterName') t2
254+
ON (t1.JoinCol = t2.JoinCol)
255+
INNER JOIN
256+
(SELECT [value] AS AppName
257+
FROM sys.dm_hadr_fabric_config_parameters
258+
WHERE section_name = 'SQL' and parameter_name = 'InstanceName') t3
259+
ON (t1.AppName = t3.AppName)
253260
UNION
254261
SELECT 'DECLARE @port NVARCHAR(512) = N'''+ value + ''''
255262
FROM sys.dm_hadr_fabric_config_parameters
256-
WHERE PARAMETER_NAME = 'HadrPort';
263+
WHERE parameter_name = 'HadrPort';
257264
```
258265
259266
You will get something like:

docs/ado/reference/ado-api/filter-and-recordcount-properties-example-vb.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ End Sub
9999
```
100100

101101
> [!NOTE]
102-
> When you know the data you want to select, it's usually more efficient to open a **Recordset** with an SQL statement. This example shows how you can create just one **Recordset** and obtain records from a particular country.
102+
> When you know the data you want to select, it's usually more efficient to open a **Recordset** with an SQL statement. This example shows how you can create just one **Recordset** and obtain records from a particular country/region.
103103
104104
```
105105
Attribute VB_Name = "Filter"

docs/connect/jdbc/using-kerberos-integrated-authentication-to-connect-to-sql-server.md

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
2-
title: "Using Kerberos integrated authentication to connect to SQL Server"
3-
description: "Using Kerberos integrated authentication to connect to SQL Server"
2+
title: Using Kerberos integrated authentication to connect to SQL Server
3+
description: Learn how to configure Kerberos integrated authentication to connect to SQL Server on Windows, Linux, and macOS.
44
author: David-Engel
55
ms.author: v-davidengel
6-
ms.date: 07/30/2020
6+
ms.date: 11/07/2022
77
ms.prod: sql
88
ms.technology: connectivity
99
ms.topic: conceptual
@@ -13,7 +13,7 @@ ms.topic: conceptual
1313

1414
[!INCLUDE[Driver_JDBC_Download](../../includes/driver_jdbc_download.md)]
1515

16-
Beginning in [!INCLUDE[jdbc_40](../../includes/jdbc_40_md.md)], an application can use the **authenticationScheme** connection property to indicate that it wants to connect to a database using type 4 Kerberos integrated authentication. See [Setting the Connection Properties](../../connect/jdbc/setting-the-connection-properties.md) for more information on connection properties. For more information on Kerberos, see [Microsoft Kerberos](/windows/win32/secauthn/microsoft-kerberos).
16+
Beginning in [!INCLUDE[jdbc_40](../../includes/jdbc_40_md.md)], an application can use the **authenticationScheme** connection property to indicate that it wants to connect to a database using type 4 Kerberos integrated authentication. For more information on connection properties, see [Setting the Connection Properties](../../connect/jdbc/setting-the-connection-properties.md). For more information on Kerberos, see [Microsoft Kerberos](/windows/win32/secauthn/microsoft-kerberos).
1717

1818
When using integrated authentication with the Java **Krb5LoginModule**, you can configure the module using [Class Krb5LoginModule](https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html).
1919

@@ -37,7 +37,7 @@ Beginning in [!INCLUDE[jdbc_40](../../includes/jdbc_40_md.md)], an application c
3737

3838
- To continue using integrated authentication with **mssql-jdbc_auth-\<version>-\<arch>.dll**, just specify **integratedSecurity=true** connection property (and optionally **authenticationScheme=NativeAuthentication**).
3939

40-
- If you specify **authenticationScheme=JavaKerberos** but do not also specify **integratedSecurity=true**, the driver will ignore the **authenticationScheme** connection property and it will expect to find user name and password credentials in the connection string.
40+
- If you specify **authenticationScheme=JavaKerberos** but don't also specify **integratedSecurity=true**, the driver will ignore the **authenticationScheme** connection property and it will expect to find user name and password credentials in the connection string.
4141

4242
When using a datasource to create connections, you can programmatically set the authentication scheme using **setAuthenticationScheme** and (optionally) set the SPN for Kerberos connections using **setServerSpn**.
4343

@@ -57,9 +57,9 @@ The following guidelines will help you to configure Kerberos:
5757

5858
A service principal name (SPN) is the name by which a client uniquely identifies an instance of a service.
5959

60-
You can specify the SPN using the **serverSpn** connection property, or simply let the driver build it for you (the default). This property is in the form of: "MSSQLSvc/fqdn:port\@REALM" where fqdn is the fully-qualified domain name, port is the port number, and REALM is the Kerberos realm of the SQL Server in upper-case letters. The realm portion of this property is optional if your Kerberos configuration's default realm is the same realm as that of the Server and is not included by default. If you wish to support a cross-realm authentication scenario where the default realm in the Kerberos configuration is different than the realm of the Server, then you must set the SPN with the serverSpn property.
60+
You can specify the SPN using the **serverSpn** connection property, or let the driver build it for you (the default). This property is in the form of: "MSSQLSvc/fqdn:port\@REALM" where fqdn is the fully qualified domain name, port is the port number, and REALM is the Kerberos realm of the SQL Server in upper-case letters. The realm portion of this property is optional if your Kerberos configuration's default realm is the same realm as the Server and isn't included by default. If you want to support a cross-realm authentication scenario where the default realm in the Kerberos configuration is different than the realm of the Server, then you must set the SPN with the serverSpn property.
6161

62-
For example, your SPN might look like: "MSSQLSvc/some-server.zzz.corp.contoso.com:1433\@ZZZZ.CORP.CONTOSO.COM"
62+
For example, your SPN might look like: `MSSQLSvc/some-server.zzz.corp.contoso.com:1433@ZZZZ.CORP.CONTOSO.COM`
6363

6464
For more information about service principal names (SPNs), see:
6565

@@ -74,7 +74,7 @@ For more information about service principal names (SPNs), see:
7474
7575
## Creating a login module configuration file
7676

77-
You can optionally specify a Kerberos configuration file. If a configuration file is not specified, the following settings are in effect:
77+
You can optionally specify a Kerberos configuration file. If a configuration file isn't specified, the following settings are in effect:
7878

7979
Sun JVM
8080
com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
@@ -99,21 +99,21 @@ SQLJDBCDriver {
9999
};
100100
```
101101

102-
So, each login module configuration file entry consists of a name followed by one or more LoginModule-specific entries, where each LoginModule-specific entry is terminated by a semicolon and the entire group of LoginModule-specific entries is enclosed in braces. Each configuration file entry is terminated by a semicolon.
102+
Each login module configuration file entry consists of a name followed by one or more LoginModule-specific entries. Each LoginModule-specific entry is terminated by a semicolon and the entire group of LoginModule-specific entries is enclosed in braces. Each configuration file entry is terminated by a semicolon.
103103

104-
In addition to allowing the driver to acquire Kerberos credentials using the settings specified in the login module configuration file, the driver can use existing credentials. This can be useful when your application needs to create connections using more than one user's credentials.
104+
In addition to allowing the driver to acquire Kerberos credentials using the settings specified in the login module configuration file, the driver can use existing credentials. This method can be useful when your application needs to create connections using more than one user's credentials.
105105

106-
The driver will attempt to use existing credentials if they are available, before attempting to login using the specified login module. Thus, when using the `Subject.doAs` method for executing code under a specific context, a connection will be created with the credentials passed to the `Subject.doAs` call.
106+
The driver will attempt to use existing credentials if they're available, before attempting to log in using the specified login module. Thus, when using the `Subject.doAs` method for executing code under a specific context, a connection will be created with the credentials passed to the `Subject.doAs` call.
107107

108108
For more information, see [JAAS Login Configuration File](https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/tutorials/LoginConfigFile.html) and [Class Krb5LoginModule](https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html).
109109

110-
Beginning in Microsoft JDBC Driver 6.2, name of login module configuration file can optionally be passed using connection property `jaasConfigurationName`, this allows each connection to have its own login configuration.
110+
Beginning in Microsoft JDBC Driver 6.2, the name of the login module configuration file can optionally be passed using the connection property `jaasConfigurationName`. This method allows each connection to have its own login configuration.
111111

112112
## Creating a Kerberos configuration file
113113

114114
For more information about Kerberos configuration files, see [Kerberos Requirements](https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/tutorials/KerberosReq.html).
115115

116-
This is a sample domain configuration file, where YYYY and ZZZZ are the domain names.
116+
This sample is a domain configuration file, where `YYYY` and `ZZZZ` are the domain names.
117117

118118
```ini
119119
[libdefaults]
@@ -182,7 +182,7 @@ Beginning in Microsoft JDBC Driver 6.2, the driver can establish a Kerberos conn
182182
jdbc:sqlserver://servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos;userName=user@REALM;password=****
183183
```
184184

185-
The username property does not require a REALM if the user belongs to the default_realm set in krb5.conf file. When `userName` and `password` are set along with `integratedSecurity=true;` and the `authenticationScheme=JavaKerberos;` property, the connection is established with a value of userName as the Kerberos Principal along with the password supplied.
185+
The username property doesn't require a REALM if the user belongs to the default_realm set in krb5.conf file. When `userName` and `password` are set along with `integratedSecurity=true;` and the `authenticationScheme=JavaKerberos;` property, the connection is established with a value of userName as the Kerberos Principal along with the password supplied.
186186

187187
Beginning in Microsoft JDBC Driver 9.4, the user can specify the realm for Kerberos authentication in the connection string.
188188

@@ -192,7 +192,7 @@ jdbc:sqlserver://servername=server_name;encrypt=true;integratedSecurity=true;aut
192192

193193
## Using Kerberos authentication from Unix Machines on the same domain
194194

195-
This guide assumes a working Kerberos setup already exists. Run the following code on a Windows machine with working Kerberos authentication to verify if the aforementioned is true. The code will print "Authentication Scheme: KERBEROS" to the console if successful. No additional run-time flags, dependencies, or driver settings are required outside of the ones provided. The same block of code can be run on Linux to verify successful connections.
195+
This guide assumes a working Kerberos setup already exists. Run the following code on a Windows machine with working Kerberos authentication to verify if the aforementioned is true. The code will print "Authentication Scheme: KERBEROS" to the console if successful. No other run-time flags, dependencies, or driver settings are required outside of the ones provided. The same block of code can be run on Linux to verify successful connections.
196196

197197
```java
198198
SQLServerDataSource ds = new SQLServerDataSource();
@@ -210,13 +210,48 @@ try (Connection c = ds.getConnection(); Statement s = c.createStatement();
210210
}
211211
```
212212

213-
1. Domain join the client machine to the same domain as the server.
214-
2. (Optional) Set the default Kerberos ticket location. This is most conveniently done by setting the `KRB5CCNAME` environment variable.
215-
3. Get the Kerberos ticket, either by generating a new one or placing an existing one in the default Kerberos ticket location. To generate a ticket, simply use a terminal and initialize the ticket via `kinit USER@DOMAIN.AD` where "USER" and "DOMAIN.AD" is the principal and domain respectively. E.g: `kinit SQL_SERVER_USER03@MICROSOFT.COM`. The ticket will be generated in the default ticket location or in the `KRB5CCNAME` path if set.
213+
1. Domain-join the client machine to the same domain as the server.
214+
2. (Optional) Set the default Kerberos ticket location. This step is most conveniently done by setting the `KRB5CCNAME` environment variable.
215+
3. Get the Kerberos ticket, either by generating a new one or placing an existing one in the default Kerberos ticket location. To generate a ticket, use a terminal and initialize the ticket via `kinit USER@DOMAIN.AD` where "USER" and "DOMAIN.AD" is the principal and domain respectively. For example: `kinit SQL_SERVER_USER03@MICROSOFT.COM`. The ticket will be generated in the default ticket location or in the `KRB5CCNAME` path if set.
216216
4. The terminal will prompt for a password, enter the password.
217217
5. Verify the credentials in the ticket via `klist` and confirm the credentials are the ones you intend to use for authentication.
218218
6. Run the above sample code and confirm that Kerberos Authentication was successful.
219219

220+
## Native platform GSS integration
221+
222+
Native platform GSS integration allows Java applications to use the native GSS-API rather than the cryptographic mechanisms of the JDK implementation of the GSS-API. For example, the following sample code demonstrates how to enable use of the native GSS-API within the driver:
223+
224+
```java
225+
GSSCredential credential = GSSManager.getInstance().createCredential(null, GSSCredential.DEFAULT_LIFETIME, new Oid("1.2.840.113554.1.2.2"), GSSCredential.ACCEPT_ONLY);
226+
227+
SQLServerDataSource ds = new SQLServerDataSource();
228+
dataSource.setURL("jdbc:sqlserver://<server>;databaseName=<database>;integratedSecurity=true;authenticationScheme=JavaKerberos;");
229+
ds.setGSSCredentials(credential);
230+
ds.getConnection();
231+
232+
try (Connection conn = ds.getConnection()) {
233+
ResultSet rs = conn.executeQuery("select auth_scheme from sys.dm_exec_connections where session_id=@@spid")) {
234+
while (rs.next()) {
235+
System.out.println("Authentication Scheme: " + rs.getString(1));
236+
}
237+
}
238+
```
239+
240+
In addition, the following JVM arguments are also required:
241+
242+
```bash
243+
-Dsun.security.jgss.native=true
244+
-Djavax.security.auth.useSubjectCredsOnly=false
245+
```
246+
247+
You may also optionally provide the path to the native GSS library.
248+
249+
```bash
250+
-Dsun.security.jgss.lib=path/to/native/gss/library // This is optional
251+
```
252+
253+
For more information on JVM arguments, see the official Java documentation.
254+
220255
## See also
221256

222257
[Connecting to SQL Server with the JDBC driver](../../connect/jdbc/connecting-to-sql-server-with-the-jdbc-driver.md)

0 commit comments

Comments
 (0)