Tải bản đầy đủ (.pdf) (10 trang)

Microsoft SQL Server 2008 R2 Unleashed- P33 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (400.28 KB, 10 trang )

ptg
274
CHAPTER 10 Client Installation and Configuration
NOTE
By default, all network protocols except for VIA are enabled on the client during
installation.
That’s all there is to installing SNAC!
Redistributing SNAC with Custom Client Applications
If you build an application that relies on SNAC, you need to be aware that it can be redis-
tributed in two ways:
. As part of any SQL Server 2008 installation or upgrade
. As a custom application installation dependency
When you are building MSI files for an application, it is important that you register
sqlncli.msi as a package dependency (and, of course, to install it as well, if it is not
present on the destination machine). This helps ensure that SNAC will not be accidentally
uninstalled from the destination machine without first flashing a warning to users, indi-
cating that any application that relies on it will break. To do this, you execute the follow-
ing command early in your application’s installation process:
msiexec /i sqlncli.msi APPGUID={unique identifier for your product}
NOTE
The program name for SNAC found in the Add or Remove Programs Control Panel
applet is Microsoft SQL Server 2008 Native Client, not SQL Native Client, as it is com-
monly known.
Client Configuration
Client configuration is a many-leveled beast, consisting of operating system tasks such as
installing protocols, application tasks such as choosing or coding to a specific Application
Programming Interface (API), provider, or driver, and maintenance tasks such as configur-
ing network settings, building connection strings, and so on. The following sections cover
a broad range of these tasks, focusing on the most common. Many examples utilize
TCP/IP both because it is the default protocol for remote clients and because it is the most
widely used.


No chapter can cover all the possible ways of connecting, but this one is designed to give
you the tools you need to get set up right from the start and to navigate your way in case
specific issues arise.
The first client configuration tool we look at is SSCM.
Download from www.wowebook.com
ptg
275
Client Configuration
10
Client Configuration Using SSCM
The Client Network Utility available prior to SQL Server 2005 has been decommissioned,
and all its functionality is now built into SSCM. This includes the capability to create
server aliases, to enable and prioritize network protocols, to control the various SQL Server
services, and more.
NOTE
One thing Microsoft is keen on including in Books Online is that neither Setup nor
sqlncli.msi installs the actual network protocols themselves, nor do they enable
them at the operating system level. This means that if you do not have TCP/IP
installed and you need to start using it, you have to first set it up by using the Network
Connections Control Panel applet (if you’re using Windows, that is).
You can launch SSCM directly from its Start menu icon, or you can access it in the
Services and Applications node of the Computer Management console. When you
have SSCM up and running, to access its client-side functionality, you expand its top-level
node (SQL Server Configuration Manager (servername)) and then you click the SQL
Native Client 10.0 Configuration node. Below it, you click the Client Protocols node
to reveal the enabled state and priority order of each protocol, in grid format, in the right
pane (see Figure 10.4).
From this screen, you can right-click any of the protocols to change their enabled state,
view Properties pages, or change the default connection order (except that of shared
memory, which is always tried first and whose order cannot be changed). The following is

the default connection order for clients connecting without the benefit of a server alias,
connection string, or other means:
FIGURE 10.4 SSCM’s Client Protocols screen.
Download from www.wowebook.com
ptg
276
CHAPTER 10 Client Installation and Configuration
FIGURE 10.5 The TCP/IP Properties screen.
. Shared memory
. TCP/IP
. Named pipes
(As the grid shows, VIA is disabled by default.) When you are connecting remotely, TCP/IP
is the first protocol attempted because shared memory is local only.
NOTE
When a client does not specify a connection protocol, SNAC automatically tries each
protocol in the list in sequence, according to the Order column. The first protocol to
connect successfully wins.
If the winning connection is subsequently rejected by the server for any reason, no
other protocols are tried.
Note also that local clients using MDAC 2.8 or lower cannot connect using shared
memory, and they are automatically switched to named pipes if they attempt to do so.
Let’s examine one of the protocols. To start, you need to double-click TCP/IP under the
Name column to open the TCP/IP Properties screen (see Figure 10.5).
The values stored here are used by TCP/IP clients as default connection values, and they are
applied only when a specific server alias or other configuration mechanism is not in use.
They are also used by the SQL Server 2008 client tools when shared memory is not available.
Download from www.wowebook.com
ptg
277
Client Configuration

10
FIGURE 10.6 Alias properties for a new named pipe server alias.
As you can see, the default port, 1433, is set up to connect to the more commonly config-
ured default instances of SQL Server. By editing the values on this page, you can change
the default port number, enabled state, keep-alive values, and other settings (when
editing other protocols). You should edit and enable the protocols according to your
specific needs.
Server Aliases
A server alias is a name that is used like a server name that represents a group of server
settings for use by connecting clients. Server aliases are very handy because of the way
they simplify connection parameters: clients need only specify the alias name, and SNAC
pulls the rest of the information (such as the IP address, TCP port number, and pipe
name) from SSCM at connection time.
To create a server alias, you right-click the
Aliases node under SQL Native Client
Configuration and choose New Alias. On the Alias - New screen that appears (see Figure
10.6), you specify the alias name, protocol (except shared memory, for which you cannot
create an alias), and server name. (local, ., and localhost also work for local connections
over TCP/IP or named pipes.)
When you make your protocol selection, the grid rows change to dynamically reveal the
settings particular to that protocol. When you are finished, you click OK, and your alias is
ready for use.
Download from www.wowebook.com
ptg
278
CHAPTER 10 Client Installation and Configuration
FIGURE 10.7 Importing a certificate on the client computer using the Certificate Import
Wizard.
Connection Encryption
With SQL Server 2008, it is easy to set up Secure Sockets Layer (SSL) encrypted

client/server communication over all protocols. The SNAC net-library handles the tasks of
encryption and decryption on both the server and client ends. (Note that this process
does cause a slight decrease in performance.) Setting it up requires both server-side and
client-side configuration changes; this section covers only the client-side changes in detail.
SQL Server 2008 enables encryption using two types of certificates:
. Certificates generated by and obtained from an external certification authority such
as VeriSign
. Certificates generated by SQL Server 2008 (known as self-signed certificates)
The bit strength of the encryption (40-bit or 128-bit) depends on the bit strength of the
operating systems of the computers involved in the connection.
To set up the server for encryption, your administrator registers a certificate on the server
operating system (using the Certificates Management console) and then installs it in the
Database Engine.
If an externally signed certificate is not installed on the server, SQL Server uses its built-in
self-signed certificate. (A server administrator may also create and save a self-signed certifi-
cate by using SQL Server 2008 via the new CREATE CERTIFICATE and BACKUP CERTIFICATE
T-SQL syntax.) It is also up to the server to decide whether encryption is required or
optional for connecting clients.
The client’s half of the job is to have installed what is known as a root-level certificate that
is issued by the same certification authority as the server’s certificate. To install a root-level
certificate, you right-click the certificate itself (a .cer or .crt file) and select Install
Certificate to launch the Certificate Import Wizard. You click Next on the welcome screen
to reach the Certificate Store screen (see Figure 10.7). Then you select the first radio button
(Automatically Select the Certificate Store) and then click Next. Finally, you click Finish.
Download from www.wowebook.com
ptg
279
Client Data Access Technologies
10
FIGURE 10.8 Forcing clients to request an encrypted connection using SSCM.

Next, you launch SSCM, right-click the SQL Native Client 10.0 Configuration node,
and then select Properties. The Flags tab appears (see Figure 10.8) in the Properties window.
You set the Force Protocol Encryption property value to Yes. This causes clients to
request an SSL-encrypted connection when communicating with the Database Engine. If
the server does not respond in kind, the connection is killed.
The Trust Server Certificate property gives clients a choice in how they deal with
server certificates:
. To use a self-signed certificate, you set the property value to Yes. This option
prevents SNAC from validating the server’s certificate.
. To use an externally signed certificate, you set the property value to No, which causes
SNAC to validate the server’s certificate.
SSMS can also connect over an encrypted connection. When connecting using the
Connect to Server dialog, you click the Options button and then click the Connection
Properties tab. Then you choose your database and protocol and, at the bottom left, check
the Encrypt Connection check box.
Client Data Access Technologies
The question of which data access technology to use with SQL Server 2008 is a common
one, with a seemingly easy answer: you use SNAC because it has all the latest and greatest
functionality, all rolled into one. (You learn how to use SNAC in the sections that follow.)
Download from www.wowebook.com
ptg
280
CHAPTER 10 Client Installation and Configuration
A more correct answer is that your choice depends on which software technologies your
clients currently use and what their specific needs are.
Your data access options consist of providers and drivers, whose functionality is often
encapsulated inside code libraries known as net-libraries (such as SNAC’s sqlncli10.dll).
In addition to these net-libraries, supporting services such as MDAC’s OLE DB Core
Services are also available, providing useful functionality not found in the net-libraries,
such as connection pooling. (ADO.NET also functions as a service, to a certain degree.)

NOTE
The Microsoft Data Access Components (MDAC) has a new name that started with the
Vista operating system. The data access components are now called Windows Data
Access Components or Windows DAC or WDAC. References to MDAC in this chapter
also apply to the Windows DAC.
Provider Choices
A provider is software used for accessing various data stores in a consistent manner
conforming to a specification, such as OLE DB. A provider may contain an API. Clients
that use providers are known as consumers. SMSS and SQLCMD, for example, are
consumers of the SNAC OLE DB provider.
You can choose from the following providers:
. SQL Native Client OLE DB provider—This is the latest OLE DB provider, and it is
built into SNAC; it is also known as SQLNCLI. COM applications might want to
switch to this provider to access the latest functionality; doing so also provides
access to SQL Server 7 and 2000 databases.
. .NET Framework data provider for SQL Server—This data provider is built in to
the System.Data.SqlClient namespace in the .NET Framework. Managed code
applications should use it to access the latest SQL Server 2008 functionality from
.NET 3.5 applications. .NET 1.0, 1.1, and 2.0 applications do not have access to all
the latest SQL Server 2008 functionality through this provider.
. Microsoft OLE DB provider for SQL Server—This OLE DB provider, known as
SQLOLEDB, is specialized for accessing SQL Server data and is distributed with MDAC.
COM applications may continue to use it to access SQL Server 2008, or they can
switch to SQLNCLI for the latest functionality.
. Microsoft OLE DB provider for ODBC—This deprecated OLE DB provider, known
as MSDASQL, is distributed with MDAC. ADO applications can continue to use it to
access SQL Server 2008, but SQL Server does not support the latest SNAC-specific
OLE DB functionality.
Microsoft has also made available a few implementation-specific OLE DB providers, such
as the OLE DB provider for DB2, a COM component for integrating IBM DB2 and SQL

Server 2008 data.
Download from www.wowebook.com
ptg
281
Client Data Access Technologies
10
Driver Choices
A driver in this context can be defined as software that conforms to a standard such as
Open Database Connectivity (ODBC) and provides an API for accessing a specific type of
data store. osql.exe is a good example of an application that uses an ODBC driver (the
SNAC driver).
These are the available drivers:
. SQL Native Client ODBC driver—This is the latest ODBC driver, and it is built
into SNAC. COM applications might want to switch to this driver to access the latest
functionality.
. Microsoft ODBC driver for SQL Server—This is the ODBC driver distributed with
MDAC for accessing SQL Server databases. COM applications can continue to use it
to access SQL Server 2008, or they can switch to the SNAC ODBC driver for the
latest functionality. This driver also provides access to SQL Server 7, 2000, and 2005
databases.
. Java Database Connectivity (JDBC) driver—The JDBC driver was built
specifically for accessing SQL Server data from Java code.
CAUTION
Although it is still possible to connect to SQL Server 2008 by using DB-library and
Embedded SQL, Microsoft has deprecated them both, and they will not be supported in
future editions.
Connecting Using the Various Providers and Drivers
Now that you know what your options are in terms of providers and drivers, the following
sections detail them one by one, with a special focus on putting the features in SQL Server
2008 to work.

Using SNAC
SNAC is a net-library that contains both the latest OLE DB provider and ODBC driver for
using the rich features in SQL Server 2008 databases. It is compatible for accessing SQL
Server 7, 2000, and 2005 databases as well.
The code for SNAC is contained in the single dynamic link library sqlncli10.dll, and it
serves as provider, driver, and API for applications that call its underlying COM functions
from unmanaged code (that is, from C or C++).
The bottom line with SNAC is that if you’re building applications that need to exploit the
latest features of SQL Server 2008, you need to use its APIs. If you don’t, your application
will continue to work without SNAC, but those new features will not be available.
Download from www.wowebook.com
ptg
282
CHAPTER 10 Client Installation and Configuration
FIGURE 10.9 Using the Data Sources (ODBC) tool to configure MARS with a SNAC ODBC DSN.
NOTE
A large number of connection keywords are available for use with SNAC connections. A
few of them are illustrated in the examples that follow, but for a complete reference,
see the Books Online topic “Using Connection String Keywords with SQL Native Client.”
Using OLE DB with SNAC Applications that call the COM APIs for OLE DB need to have
the connection provider value changed from SQLOLEDB to SQLNCLI10. You also need to use
the SNAC header file, as in the following example:
include “sqlncli.h”;
sqlncli.h contains the latest function prototypes and other definitions for use with
SNAC. This file is named the same as it was in SQL Server 2005, but it is installed in a
different location.
NOTE
The SNAC OLE DB provider is OLE DB version 2.0 compliant.
Using ODBC with SNAC To connect to SQL Server 2008 using ODBC, you use a connec-
tion string or a DSN that is accessible to the client application at runtime. The ODBC

driver used with SQL Server 2000 (simply called SQL Server) can still be used but is not
the best option for SQL Server 2005 or 2008. To get the latest SNAC functionality, you
must use the driver called SQL Native Client 10.0 (for example, DRIVER={SQL Native
Client 10.0}).
To create a SNAC ODBC DSN, you run the Data Sources (ODBC) applet found in your
operating system’s administrative tools. You create a system, file, or user DSN, and you
need to be sure to select the SQL Server Native Client 10.0 driver on the Create New Data
Source screen that appears. On this screen, you click the Advanced button to enter any
SNAC-specific connection string keyword-value pairs, as shown in Figure 10.9.
Download from www.wowebook.com
ptg
283
Client Data Access Technologies
10
You finish the wizard by entering the configuration data as you normally would, and you
can use you new DSN just as you would any other. For more information on building
COM applications that utilize SNAC, see the Books Online topic “Creating a SQL Native
Client ODBC Driver Application.”
Using ADO with SNAC Of course, the first recommendation is that if you’re still using
ADO, you should switch to ADO.NET if you can. If that isn’t feasible, you can still access
SQL Server 2008 from your ADO applications. But you should do so only if you need the
new features; in this case, you need to start using the SNAC OLE DB provider in your code.
To do so, you first install SNAC, and then you update your connection strings (or DSNs) to
use the new SQLNCLI value for the Provider connection string keyword. Then you set the
DataTypeCompatibility keyword to 80. Here’s an example (in Visual Basic 6 code):
Dim MyConnection As New ADODB.Connection
Dim MyFirstOpenRecordset As New ADODB.Recordset
Dim MySecondOpenRecordset As New ADODB.Recordset
Dim ConnString As String
Dim SelectResultsCount As Integer

Connstring =
“Provider=SQLNCLI; DataTypeCompatibility=80; Database=MyAppsDB;” & _
“Server=.\SQLEXPRESS; AttachDBFileName=c:\MyDBs\MyAppsDB.mdf;” & _
“MARS Connection=true; Integrated Security=SSPI;”
MyConnection.ConnectionString = ConnString
MyConnection.Open
‘ Using 2 open recordsets on one connection puts MARS to work:
Set MyFirstOpenRecordset =
MyConnection.Execute(
“SELECT TOP 10 * FROM MyTable”,
SelectResultsCount,
adCmdText
)
Set MySecondOpenRecordset =
MyConnection.Execute(“SELECT TOP 10 * FROM MySecondTable”, _
SelectResultsCount, adCmdText)
‘ and so on
Note the use of the AttachDBFileName connection string keyword, which instructs SQL
Server 2008 to attach the specified Microsoft data file (MyAppsDB.mdf).
Using the .NET Framework Data Provider for SQL Server
.NET applications that use the System.Data.SqlClient namespace rely on the .NET
Framework data provider and ADO.NET. To use this provider, you simply add the follow-
ing statement to your C# code file:
using System.Data.SqlClient;
Download from www.wowebook.com

×