Udostępnij za pośrednictwem


Procedura SQLSetConnectAttr

SQL Server Sterownik ODBC macierzystym klienta zignoruje ustawienie SQL_ATTR_CONNECTION_TIMEOUT.

SQL_ATTR_TRANSLATE_LIB jest również ignorowane; określając inną biblioteką translacji nie jest obsługiwane.Aby zezwolić aplikacjom łatwo przenoszone do używania sterownik Microsoft ODBC dla SQL Server, każda wartość zestaw z SQL_ATTR_TRANSLATE_LIB zostaną skopiowane do i z buforu w sterownik menedżera.

SQL Server Sterownik ODBC macierzystym klienta implementuje izolacji transakcji powtarzalnych odczytu jako możliwy do serializacji.

SQL Server 2005wprowadzono obsługę nowy atrybut izolacji transakcji, SQL_COPT_SS_TXN_ISOLATION.Ustawienie SQL_COPT_SS_TXN_ISOLATION do SQL_TXN_SS_SNAPSHOT wskazuje, że transakcja będzie miała miejsce w poziom izolacji migawka.

Ostrzeżenie

SQL_ATTR_TXN_ISOLATION zestaw inne poziomy izolacji z wyjątkiem dla SQL_TXN_SS_SNAPSHOT.Jeśli chcesz używać migawka izolacji musi zestaw SQL_TXN_SS_SNAPSHOT przez SQL_COPT_SS_TXN_ISOLATION.Jednakże poziom izolacji można pobrać za pomocą SQL_ATTR_TXN_ISOLATION lub SQL_COPT_SS_TXN_ISOLATION.

Wspieranie atrybuty instrukcja atrybuty połączenia ODBC może mieć niezamierzone skutki.Atrybuty instrukcji, które żądanie serwera kursory dla zestaw wyników przetwarzanie może być podwyższony do połączenia.Na przykład, ustawienie ODBC instrukcja atrybut SQL_ATTR_CONCURRENCY bardziej restrykcyjny niż domyślny SQL_CONCUR_READ_ONLY kieruje sterownik dynamiczne kursory dla wszystkich wartości instrukcjas przedstawionych na połączenie.Wykonywanie funkcja wykazu ODBC instrukcja połączenia zwraca wartość SQL_SUCCESS_WITH_INFO i diagnostycznych rekordu wskazująca, że zachowanie kursor został zmieniony na, tylko do odczytu.Próby wykonać języka Transact-SQL SELECT instrukcja zawierające klauzula obliczeń na tym samym połączeniu nie powiedzie się.

SQL Server Sterownik ODBC Klient macierzysty obsługuje wiele rozszerzeń specyficzne dla sterownika ODBC połączenia atrybuty zdefiniowane w sqlncli.h. SQL Server Sterownik ODBC macierzystym klienta mogą wymagać, aby ustawić atrybut przed do połączenia, lub pominąć atrybut, jeśli jest już zestaw.Poniższa tabela zawiera listę ograniczeń.

Atrybut SQL Server

Przed lub po połączeniu z serwerem

SQL_COPT_SS_ANSI_NPW

Przed

SQL_COPT_SS_ATTACHDBFILENAME

Przed

SQL_COPT_SS_BCP

Przed

SQL_COPT_SS_BROWSE_CONNECT

Przed

SQL_COPT_SS_BROWSE_SERVER

Przed

SQL_COPT_SS_CONCAT_NULL

Przed

SQL_COPT_SS_CONNECTION_DEAD

Po

SQL_COPT_SS_ENCRYPT

Przed

SQL_COPT_SS_ENLIST_IN_DTC

Po

SQL_COPT_SS_ENLIST_IN_XA

Po

SQL_COPT_SS_FALLBACK_CONNECT

Przed

SQL_COPT_SS_FAILOVER_PARTNER

Przed

SQL_COPT_SS_INTEGRATED_SECURITY

Przed

SQL_COPT_SS_MARS_ENABLED

Przed

SQL_COPT_SS_OLDPWD

Przed

SQL_COPT_SS_PERF_DATA

Po

SQL_COPT_SS_PERF_DATA_LOG

Po

SQL_COPT_SS_PERF_DATA_LOG_NOW

Po

SQL_COPT_SS_PERF_QUERY

Po

SQL_COPT_SS_PERF_QUERY_INTERVAL

Po

SQL_COPT_SS_PERF_QUERY_LOG

Po

SQL_COPT_SS_PRESERVE_CURSORS

Przed

SQL_COPT_SS_QUOTED_IDENT

Albo

SQL_COPT_SS_TRANSLATE

Albo

SQL_COPT_SS_TRUST_SERVER_CERTIFICATE

Przed

SQL_COPT_SS_TXN_ISOLATION

Albo

SQL_COPT_SS_USE_PROC_FOR_PREP

Albo

SQL_COPT_SS_USER_DATA

Albo

SQL_COPT_SS_WARN_ON_CP_ERROR

Przed

SQL_COPT_SS_ANSI_NPW

SQL_COPT_SS_ANSI_NPW Włącza lub wyłącza używanie obsługi ISO Null w porównania i łączenie, typu znakowego uzupełnienie i ostrzeżenia.Aby uzyskać więcej informacji zobacz ustawienia ANSI_NULLS, ustaw spowodowałyby, ustaw ANSI_WARNINGS oraz USTAWIĆ CONCAT_NULL_YIELDS_NULL.

Wartość

Opis

SQL_AD_ON

Domyślny.Połączenie używa ANSI domyślne zachowanie obsługi porównania wartości NULL, uzupełnienie, ostrzeżenia i relacyjne NULL.

SQL_AD_OFF

Używa połączenia SQL Server-zdefiniowana obsługa NULL, znaku typu danych uzupełnienie i ostrzeżeń.

Jeśli korzystasz z puli połączeń, SQL_COPT_SS_ANSI_NPW powinna być ustawiona w połączeniu z ciąg, zamiast z SQLSetConnectAttr.Po ustanowieniu połączenia, próba zmienić ten atrybut nie będzie dyskretnie kiedy jest używane buforowanie połączeń.

SQL_COPT_SS_ATTACHDBFILENAME

SQL_COPT_SS_ATTACHDBFILENAME Określa nazwę pliku podstawowego dołączanej bazy danych.Ta baza danych jest podłączony i staje się domyślna baza danych dla połączenia.Używać SQL_COPT_SS_ATTACHDBFILENAME należy określić nazwę bazy danych jako wartość atrybut połączenia SQL_ATTR_CURRENT_CATALOG lub w bazie danych = parametr SQLDriverConnect.Jeśli wcześniej został dołączony bazy danych, SQL Server nie będzie ponownie podłącz go

Wartość

Opis

SQLPOINTER ciąg znaków

Ciąg zawiera nazwę pliku podstawowego dla dołączania bazy danych.Zawierać pełną nazwę ścieżka pliku.

SQL_COPT_SS_BCP

Umożliwia SQL_COPT_SS_BCP kopiowanie masowe funkcji połączenia.Aby uzyskać więcej informacji, zobacz Funkcji kopiowania luzem.

Wartość

Opis

SQL_BCP_OFF

Domyślny.Funkcji kopiowania luzem nie są dostępne dla połączenia.

SQL_BCP_ON

Funkcji kopiowania luzem są dostępne dla połączenia.

SQL_COPT_SS_BROWSE_CONNECT

Ten atrybut jest używany do dostosowania zestaw wyników zwrócone przez procedura SQLBrowseConnect.SQL_COPT_SS_BROWSE_CONNECT Włącza lub wyłącza zwrotu dodatkowe informacje z wyliczanych wystąpienie SQL Server.Może to informacje, takie jak na to, czy serwer jest klaster, nazwy innego wystąpienia i numer wersja.

Wartość

Opis

SQL_MORE_INFO_NO

Domyślny.Zwraca listę serwerów.

SQL_MORE_INFO_YES

W SQL Server 7.0, procedura SQLBrowseConnect zwraca listę serwerów; w przeciwnym razie procedura SQLBrowseConnect zwraca ciąg rozszerzone właściwości serwera.

SQL_COPT_SS_BROWSE_SERVER

Ten atrybut jest używany do dostosowania zestaw wyników zwrócone przez procedura SQLBrowseConnect.SQL_COPT_SS_BROWSE_SERVER Określa nazwa serwera, dla którego procedura SQLBrowseConnect zwraca informacje.

Wartość

Opis

nazwa_komputera

Procedura SQLBrowseConnect zwraca listę wystąpień SQL Server na określonym komputerze.Ułamkowe odwrócone (\) nie należy używać nazwa serwera (na przykład, zamiast \\mój_serwer, MójSerwer powinny być używane).

NULL

Domyślny.Procedura SQLBrowseConnect zwraca informacje dla wszystkich serwerów w domena.

SQL_COPT_SS_CONCAT_NULL

SQL_COPT_SS_CONCAT_NULL Włącza lub wyłącza używanie obsługi ISO NULL, gdy Konkatenowanie ciągów znaków.Aby uzyskać więcej informacji zobacz Ustawianie CONCAT_NULL_YIELDS_NULL.

Wartość

Opis

SQL_CN_ON

Domyślny.Połączenie używa ISO domyślne zachowanie obsługi wartości NULL podczas Konkatenowanie ciągów znaków.

SQL_CN_OFF

Używa połączenia SQL Server-określone zachowanie obsługi wartości NULL podczas Konkatenowanie ciągów.

SQL_COPT_SS_ENCRYPT

Formanty szyfrowanie dla połączenia.

Szyfrowanie używa certyfikat na serwerze.To musi zostać zweryfikowana przez urząd certyfikacji, chyba że atrybut połączenia SQL_COPT_SS_TRUST_SERVER_CERTIFICATE zestaw SQL_TRUST_SERVER_CERTIFICATE_YES lub połączenia zawiera ciąg "TrustServerCertificate = yes".Jeśli spełniony jest jeden z tych warunków, świadectwo generowane i podpisane przez serwer można zaszyfrować połączenie, jeśli certyfikat nie znajduje się na serwerze.

Wartość

Opis

SQL_EN_ON

Połączenia będą szyfrowane.

SQL_EN_OFF

Połączenie nie będą szyfrowane.Jest to wartość domyślna.

SQL_COPT_SS_ENLIST_IN_DTC

Klient wywołuje Microsoft Distributed Transaction Coordinator (MS DTC) OLE DB ITransactionDispenser::BeginTransaction metoda, aby rozpocząć transakcję MS DTC i utworzyć obiekt transakcji MS DTC reprezentuje transakcji.Następnie aplikacja wywołuje Procedura SQLSetConnectAttr z opcją SQL_COPT_SS_ENLIST_IN_DTC, aby skojarzyć obiektu transakcji z połączenia ODBC.Wszystkie działania powiązane bazy danych będą wykonywane w obszarze ochrony transakcji MS DTC.Wywołania aplikacji Procedura SQLSetConnectAttr z SQL_DTC_DONE, aby zakończyć połączenie DTC skojarzenia.Aby uzyskać więcej informacji, zobacz Transakcje rozproszone MS DTC.

Wartość

Opis

Obiekt usługi DTC *

Obiekt transakcji MS DTC OLE, który określa transakcji do wywozu do SQL Server.

SQL_DTC_DONE

Rozdziela zakończenia transakcji usługi DTC.

SQL_COPT_SS_ENLIST_IN_XA

Aby rozpocząć transakcji XA z zgodny ze specyfikacją XA transakcji procesora (TP), klient wywołuje Otwórz grupę tx_begin funkcja.Następnie aplikacja wywołuje Procedura SQLSetConnectAttr z parametrem SQL_COPT_SS_ENLIST_IN_XA true, aby skojarzyć transakcji XA z połączenia ODBC.Wszystkie działania powiązane bazy danych będą wykonywane w obszarze ochrony transakcji XA.Do końca XA skojarzenia z połączenia ODBC, klient musi wywołać Procedura SQLSetConnectAttr z parametrem SQL_COPT_SS_ENLIST_IN_XA false.Aby uzyskać więcej informacji zobacz dokumentację Microsoft Distributed Transaction Coordinator.

SQL_COPT_SS_FALLBACK_CONNECT

Ten atrybut nie jest obsługiwany, ponieważ SQL Server Native Client nie obsługuje łączenie z SQL Server 6.5.

SQL_COPT_SS_FAILOVER_PARTNER

Używane do określania lub pobrać nazwy partner pracy awaryjnej, używane do dublowania baz danych w SQL Server, i jest ciąg null zakończone znak, który musi być zestaw przed połączeniem SQL Server dokonuje się początkowo.

Po dokonaniu połączenia, aplikacji można wysyłać kwerendy za pomocą tego atrybut SQLGetConnectAttr do ustalenia tożsamości partner pracy awaryjnej.Serwer podstawowy nie ma pracy awaryjnej partner właściwość ta zwraca pusty ciąg.Dzięki temu inteligentnych aplikacji buforować ostatnio określony serwer zapasowy, ale takie wnioski należy pamiętać, że informacje tylko maksymalniedatad przy pierwszym połączenia ustanowione, lub zresetować, jeśli w puli i może stać się z data długoterminowych połączeń.

Aby uzyskać więcej informacji, zobacz Za pomocą dublowania baz danych.

SQL_COPT_SS_INTEGRATED_SECURITY

SQL_COPT_SS_INTEGRATED_SECURITY wymusza użycie uwierzytelniania systemu Windows do sprawdzania poprawności dostępu na logowanie do serwera.Gdy jest używane uwierzytelnianie systemu Windows sterownik ignoruje wartości identyfikatora i hasła użytkownika w ramach SQLConnect, SQLDriverConnect, lub procedura SQLBrowseConnect przetwarzania.

Wartość

Opis

SQL_IS_OFF

Domyślny.SQL Server Uwierzytelnianie jest używane do sprawdzania poprawności identyfikatora użytkownika i hasła logowania.

SQL_IS_ON

Tryb uwierzytelniania systemu Windows jest używany do sprawdzania poprawności praw dostępu użytkownika do SQL Server.

SQL_COPT_SS_MARS_ENABLED

Ten atrybut Włącza lub wyłącza wiele zestawów wyników Active (MARS).MARS jest domyślnie wyłączona.Atrybut ten powinien być zestaw przed ustanowieniem połączenia z SQL Server.Po połączeniu SQL Server jest otwarty, MARS pozostanie włączona lub wyłączona dla życia połączenie.

Wartość

Opis

SQL_MARS_ENABLED_NO

Domyślny.Wiele zestawów wyników Active (MARS) jest wyłączona.

SQL_MARS_ENABLED_YES

MARS jest włączona.

Aby uzyskać więcej informacji na temat MARS Zobacz Za pomocą wielu aktywnych wynik ustawia (MARS).

SQL_COPT_SS_OLDPWD

Wygaśnięcie hasła dla uwierzytelniania programu SQL Server został wprowadzony w SQL Server 2005.Atrybut SQL_COPT_SS_OLDPWD został dodany do umożliwienia klient zapewnienie stare i nowe hasło dla połączenia.Gdy ta właściwość jest ustawiona, dostawca nie będzie używać puli połączeń dla pierwszego połączenia lub następnych połączeń, ponieważ połączenie ciąg będzie zawierać "starego hasła" zostanie zmieniona.

Aby uzyskać więcej informacji, zobacz Programowe zmienianie haseł.

Wartość

Opis

SQL_COPT_SS_OLD_PASSWORD

SQLPOINTER ciąg znaków zawierający stare hasło.Ta wartość jest tylko do zapisu i musi być zestaw przed połączeniem z serwerem.

SQL_COPT_SS_PERF_DATA

SQL_COPT_SS_PERF_DATA uruchamia lub zatrzymuje rejestrowanie danych wydajności.Nazwa pliku dziennika dane muszą być zestaw przed do rozpoczęcia rejestrowania danych.Zobacz SQL_COPT_SS_PERF_DATA_LOG poniżej.

Wartość

Opis

SQL_PERF_START

Uruchamia sterownik pobierania próbkowanie danych wydajności.

SQL_PERF_STOP

Zatrzymuje liczniki z próbkowanie danych wydajności.

Aby uzyskać więcej informacji, zobacz SQLGetConnectAttr.

SQL_COPT_SS_PERF_DATA_LOG

SQL_COPT_SS_PERF_DATA_LOG przypisuje nazwę pliku dziennika, używane do rejestrowania danych wydajności.Nazwa pliku dziennika jest ANSI lub Unicode, null-zakończony ciąg zależności kompilowania aplikacji.StringLength argument powinien być SQL_NTS.

SQL_COPT_SS_PERF_DATA_LOG_NOW

SQL_COPT_SS_PERF_DATA_LOG_NOW nakazuje sterownikowi zapisu dziennika statystyki na dysku.StringLength argument powinien być SQL_NTS.

SQL_COPT_SS_PERF_QUERY

SQL_COPT_SS_PERF_QUERY uruchamia lub zatrzymuje rejestrowanie dla długości uruchamianie kwerend.Nazwa pliku dziennika kwerend muszą być dostarczone przed do rozpoczęcia rejestrowania.Aplikację można zdefiniować "długotrwałe" przez ustawienie interwału rejestrowania.

Wartość

Opis

SQL_PERF_START

Uruchamia długotrwałą kwerendę rejestrowania.

SQL_PERF_STOP

Zatrzymuje rejestrowanie kwerend długotrwałe.

Aby uzyskać więcej informacji, zobacz SQLGetConnectAttr.

SQL_COPT_SS_PERF_QUERY_INTERVAL

SQL_COPT_SS_PERF_QUERY_INTERVAL ustawia próg rejestrowania kwerendy w milisekundach.Kwerendy, które nie umożliwiają rozwiązania w ramach progu są rejestrowane w pliku dziennika długotrwałe kwerendy.Na progu kwerendy jest nie ustala limitu górnego.Zerowe wartości progu kwerendy powoduje rejestrowanie wszystkich kwerend.

SQL_COPT_SS_PERF_QUERY_LOG

SQL_COPT_SS_PERF_QUERY_LOG przypisuje nazwę pliku dziennika dla rejestrowania długo działających danych kwerendy.Nazwa pliku dziennika jest ANSI lub Unicode, null-zakończony ciąg zależności kompilowania aplikacji.StringLength argument powinien być SQL_NTS lub długość ciąg w bajtach.

SQL_COPT_SS_PRESERVE_CURSORS

Atrybut ten umożliwia wysyłanie kwerendy i zestaw , czy połączenie będzie zachowywał kursor(s) podczas możesz przekazania/wycofania zatwierdzanie.Ustawienie jest SQL_PC_ON lub SQL_PC_OFF.Wartością domyślną jest SQL_PC_OFF.To ustawienie określa, czy sterownik zostanie zamknięty kursor(s), podczas wywoływania SQLEndTran (lub SQLTransact).

Wartość

Opis

SQL_PC_OFF

Domyślny.Kursory są zamknięte po zatwierdzeniu lub wycofać transakcji kopii za pomocą SQLEndTran.

SQL_PC_ON

Kursory nie są zamykane po zatwierdzeniu lub wycofać transakcji kopii za pomocą SQLEndTran, z wyjątkiem sytuacji za pomocą kursor statyczne lub zestawu kluczy w trybie asynchronicznym.Jeżeli wycofywania zostało wydane podczas zapełnianie kursor nie jest zakończone, kursor jest zamknięty.

SQL_COPT_SS_QUOTED_IDENT

SQL_COPT_SS_QUOTED_IDENT umożliwia ODBC i języka Transact-SQL sprawozdań przedłożonych przez połączenie identyfikatorów w cudzysłowach.Dostarczając identyfikatorów w cudzysłowach, SQL Server sterownik ODBC macierzystym klienta pozwala inaczej nieprawidłowy obiekt nazwy takie jak "Moje tabeli", która zawiera znak spacji w identyfikator.Aby uzyskać więcej informacji zobacz Ustawianie QUOTED_IDENTIFIER.

Wartość

Opis

SQL_QI_OFF

SQL Server Połączenia nie zezwala na identyfikatorów w cudzysłowach w Transact-SQL.

SQL_QI_ON

Domyślny.Zezwala na połączenie identyfikatorów w cudzysłowach w Transact-SQL.

SQL_COPT_SS_TRANSLATE

SQL_COPT_SS_TRANSLATE powoduje, że sterownik do translacji znaków między klient i kod serwera stron jako MBCS dane są wymieniane.The attribute affects only data stored in SQL Server char, varchar, and text columns.

Wartość

Opis

SQL_XL_OFF

Sterownik nie translacji znaków z jednej strona kodowa do innego znaku danych wymienianych między klientem a serwerem.

SQL_XL_ON

Domyślny.Sterownik tłumaczy znaki z jednego strona kodowa do innego znaku danych wymienianych między klientem a serwerem.Sterownik automatycznie konfiguruje translacji znaków w określaniu strona kodowa, zainstalowane na serwerze i że używany przez klient.

SQL_COPT_SS_TRUST_SERVER_CERTIFICATE

SQL_COPT_SS_TRUST_SERVER_CERTIFICATE powoduje, że sterownik włączyć lub wyłączyć sprawdzanie poprawności certyfikat podczas korzystania z szyfrowanie.Ten atrybut jest wartość odczytu i zapisu, ale ustawienie po ustanowieniu połączenia nie ma znaczenia.

Po otwarciu połączenia do określenia rzeczywistej ustawienia szyfrowanie i używane aplikacje klienckie mogą wysyłać kwerendy tej właściwość.

Wartość

Opis

SQL_TRUST_SERVER_CERTIFICATE_NO

Domyślny.Szyfrowanie bez sprawdzania poprawności certyfikat nie jest włączona.

SQL_TRUST_SERVER_CERTIFICATE_YES

Szyfrowanie bez sprawdzania poprawności certyfikat jest włączona.

SQL_COPT_SS_TXN_ISOLATION

Zestawy SQL_COPT_SS_TXN_ISOLATION SQL Server określonych migawka izolacji atrybut.Migawki izolacji nie zestaw przy użyciu SQL_ATTR_TXN_ISOLATION, ponieważ wartość jest SQL Server określonych.Jednakże mogą być pobierane, SQL_ATTR_TXN_ISOLATION lub SQL_COPT_SS_TXN_ISOLATION.

Wartość

Opis

SQL_TXN_SS_SNAPSHOT

Wskazuje, że z jednej transakcji nie mogą zobaczyć zmian wprowadzonych w innych transakcji i że nie można zobaczyć zmiany nawet wtedy, gdy ponowne wykonanie kwerendy.

Aby uzyskać więcej informacji o izolacji migawka, zobacz Praca z izolacji migawki.

SQL_COPT_SS_USE_PROC_FOR_PREP

Ten atrybut nie jest obsługiwany, ponieważ SQL Server Native Client nie obsługuje łączenie z SQL Server 6.5.

SQL_COPT_SS_USER_DATA

SQL_COPT_SS_USER_DATA ustawia wskaźnik danych użytkownika.Dane użytkownika są własnością klient pamięci rejestrowane na połączenie.

Aby uzyskać więcej informacji, zobacz SQLGetConnectAttr.

SQL_COPT_SS_WARN_ON_CP_ERROR

Ten atrybut określa, czy zostanie wyświetlone ostrzeżenie, jeżeli występuje utrata danych podczas strona kodowa konwersji.Dotyczy to tylko dane pochodzące z serwera.

Wartość

Opis

SQL_WARN_YES

Generowanie ostrzeżenia w przypadku utraty danych podczas konwersji strony kodowej.

SQL_WARN_NO

(Domyślnie) Po napotkaniu utraty danych podczas konwersji strony kodowej, aby nie generował ostrzeżenia.

Procedura SQLSetConnectAttr obsługę główne nazwy usług (SPN)

SQLSetConnectAttr zestaw wartość nowych atrybutów połączenia SQL_COPT_SS_SERVER_SPN i SQL_COPT_SS_FAILOVER_PARTNER_SPN.Nie zestaw atrybutów, gdy połączenie zostanie otwarte; Jeśli spróbujesz ustawić tych atrybutów, gdy połączenie jest otwarte, zwracany jest błąd HY011 z komunikatem "operacja jest nieprawidłowa w tej czas".(SQLSetConnectOption można również używać do zestaw tych wartości.)

Aby uzyskać więcej informacji dotyczących nazwy SPN, zobacz Główne nazwy usług (SPN) w połączeń klienta (ODBC).

SQL_COPT_SS_CONNECTION_DEAD

Jest to atrybut tylko do odczytu.

Aby uzyskać więcej informacji o SQL_COPT_SS_CONNECTION_DEAD, zobacz SQLGetConnectAttr i Połączenie ze źródłem danych (ODBC).

Przykład

W tym przykładzie rejestruje dane dotyczące wydajności.

SQLPERF*     pSQLPERF;
SQLINTEGER   nValue;

// See if you are already logging. SQLPERF* will be NULL if not.
SQLGetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA, &pSQLPERF,
    sizeof(SQLPERF*), &nValue);

if (pSQLPERF == NULL)
    {
    // Set the performance log file name.
    SQLSetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA_LOG,
        (SQLPOINTER) "\\My LogDirectory\\MyServerLog.txt", SQL_NTS);

    // Start logging...
    SQLSetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA,
        (SQLPOINTER) SQL_PERF_START, SQL_IS_INTEGER);
    }
else
    {
    // Take a snapshot now so that your performance statistics are discernible.
    SQLSetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA_LOG_NOW, NULL, 0);
    }

    // ...perform some action...

// ...take a performance data snapshot...
SQLSetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA_LOG_NOW, NULL, 0);

    // ...perform more actions...

// ...take another snapshot...
SQLSetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA_LOG_NOW, NULL, 0);

// ...and disable logging.
SQLSetConnectAttr(hDbc, SQL_COPT_SS_PERF_DATA,
    (SQLPOINTER) SQL_PERF_STOP, SQL_IS_INTEGER);

// Continue on...