Programowania po stronie serwera w Unicode

Aby baza danych była świadomość Unicode obejmuje Definiowanie Unicode-aware interakcje klient oprócz nchar, nvarchar, i nvarchar(max) typy danych, aby zdefiniować magazyn Unicode.ŚWIADOME Unicode interakcje klient można zdefiniować, wykonując następujące po stronie serwera bazy danych:

  • Przełączyć się z innym niż Unicode danych typów Unicode typy danych w kolumnach tabela i operacje CONVERT() i CAST().

  • Podstawić za pomocą funkcji ASCII() i CHAR() z ich odpowiedniki standardu Unicode, UNICODE() i NCHAR().

  • Definiowanie zmiennych i parametrów procedur przechowywanych i wyzwalaczy w formacie Unicode.

  • Prefiks stałych ciąg znaków Unicode literą N.

UNICODE(), NCHAR() i inne funkcje

Funkcja ASCII() zwraca kod znaku innym niż Unicode znaku przekazany.Dlatego używanie odpowiednikiem funkcja UNICODE() ciągów znaków Unicode użycia funkcja ASCII na ciągi nie obsługujących kodu Unicode.To samo dotyczy funkcja CHAR; NCHAR jest jego odpowiednik Unicode.

Ponieważ funkcja SOUNDEX() jest zdefiniowana oparte na angielski fonetyczny zasady, nie ma sensu ciągów Unicode, chyba że ciąg zawiera tylko mała znaki od a do z i do z.

ASCII, znak i SOUNDEX można przekazać parametry Unicode, ale te argumenty są niejawnie konwertowane ciągi nie obsługujących kodu Unicode.Może to spowodować ewentualnej utraty znaków Unicode, przed rozpoczęciem przetwarzania, ponieważ funkcje te działają na ciągi nie obsługujących kodu Unicode z definicji.

Oprócz funkcji UNICODE() i NCHAR() następujące funkcje manipulacji ciąg obsługuje Unicode, tam gdzie to możliwe: CHARINDEX(), LEFT(), LEN(), LITERY.WIELKIE(), =LITERY.MAŁE(), LTRIM(), RTRIM(), PATINDEX(), REPLACE(), QUOTENAME(), REPLICATE(), REVERSE(), STUFF(), SUBSTRING(), UNICODE().Te funkcje zaakceptować argumenty Unicode, przestrzeganie granic znak dwubajtowy Unicode ciągs i użyć reguły sortowania Unicode ciąg porównań, gdy parametry wejściowe są Unicode.

Definiowanie parametrów w procedurach przechowywanych

Definiowanie parametrów z Unicode typu danych gwarantuje żądań klient lub wprowadzania są niejawnie konwertowane na standard Unicode na serwerze i nie jest uszkodzony w procesie.Jeśli parametr jest określony jako parametr wyjściowy, typ Unicode także minimalizuje ryzyko uszkodzenia w drodze do klient.

W następującej procedura składowana, zmienna jest zadeklarowany jako typ danych Unicode.

CREATE PROCEDURE Product_Info
    @name nvarchar(40)
AS
SELECT p.ListPrice, v.Name
    FROM Production.Product p 
        INNER JOIN Purchasing.ProductVendor pv
            ON p.ProductID = pv.ProductID  
        INNER JOIN Purchasing.Vendor v
            ON pv.VendorID = v.VendorID
WHERE p.Name = @name;

Przy użyciu prefiksu n

Stałe ciąg Unicode występujące kod wykonywany na serwerze, takie jak procedury przechowywane i wyzwalacze, musi być poprzedzony literą N.To PRAWDA, nawet jeśli kolumna, której dotyczy odwołanie, jest już zdefiniowany jako Unicode.Bez prefiksu n ciąg jest konwertowany na domyślna strona kodowa bazy danych.To może nie rozpoznać niektórych znaków.

Na przykład utworzony w poprzednim przykładzie procedura składowana mogą być wykonywane na serwerze, w następujący sposób:

EXECUTE Product_Info @name = N'Chain'

Wymóg stosowania N dotyczy zarówno prefiks ciąg stałych, które pochodzą od serwera i wysyłane z klient.