Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Firma Microsoft rozpowszechnia poprawki Microsoft SQL Server 2005 lub Microsoft SQL Server 2008 lub SQL 2008 R2 jako pliki do pobrania. Ponieważ poprawki są kumulatywne, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji programu Microsoft SQL Server 2005 lub Microsoft SQL Server 2008 lub SQL 2008 R2 rozwiązanie

Symptomy

Załóżmy, że uruchamiasz zapytanie w wystąpieniu programu Microsoft SQL Server 2005 lub Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2, które spełnia następujące warunki:

  • Kwerenda zawiera operator relacyjny. Na przykład operator mniejszości (<).

  • W operandzie operatora relacyjnego jest dostępna funkcja DateDiff .

W takiej sytuacji program SQL Server może wybrać nieoptymalny plan zapytań, aby uruchomić to zapytanie. Dlatego kwerenda może działać wolno.

Przyczyna

Ten problem występuje, ponieważ Optymalizator SQL Server oszacuje liczbę wierszy, które zostaną zwrócone po użyciu funkcji DateDiff .

Rozwiązanie

Informacje o aktualizacji zbiorczej

SQL Server 2005 z dodatkiem Service Pack 3

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 15 dla programu SQL Server 2005 z dodatkiem Service Pack 3. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2507766 Pakiet aktualizacji zbiorczej 15 dla programu SQL Server 2005 z dodatkiem Service Pack 3Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2005. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

960598 Kompilacje programu SQL Server 2005 wydane po opublikowaniu dodatku Service Pack 3 dla programu SQL Server 2005 Poprawki programu Microsoft SQL Server 2005 są tworzone dla określonych pakietów Service Pack programu SQL Server. Musisz zastosować poprawkę dodatku Service Pack 3 dla programu SQL Server 2005 do instalacji dodatku Service Pack 3 dla programu SQL Server 2005. Wszystkie poprawki podane w dodatku Service Pack programu SQL Server są domyślnie zawarte w następnym dodatku Service Pack dla programu SQL Server.

SQL Server 2005 z dodatkiem Service Pack 4

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 2 dla programu SQL Server 2005 z dodatkiem Service Pack 4. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2489409 Pakiet aktualizacji zbiorczej 2 dla programu SQL Server 2005 z dodatkiem Service Pack 4Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2005. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2485757 Kompilacje programu SQL Server 2005 wydane po opublikowaniu dodatku Service Pack 4 dla programu SQL Server 2005 Poprawki programu Microsoft SQL Server 2005 są tworzone dla określonych pakietów Service Pack programu SQL Server. Musisz zastosować poprawkę dodatku Service Pack 4 dla programu SQL Server 2005 do instalacji dodatku Service Pack 4 do programu SQL Server 2005. Wszystkie poprawki podane w dodatku Service Pack programu SQL Server są domyślnie zawarte w następnym dodatku Service Pack dla programu SQL Server.

SQL Server 2008 z dodatkiem Service Pack 1

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 13 dla programu SQL Server 2008 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2497673 Pakiet aktualizacji zbiorczej 13 dla programu SQL Server 2008 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

970365 Kompilacje programu SQL Server 2008 wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2008 Poprawki programu Microsoft SQL Server 2008 są tworzone dla określonych pakietów Service Pack programu SQL Server. Musisz zastosować poprawkę dodatku Service Pack 1 dla programu SQL Server 2008 do instalacji dodatku Service Pack 1 do programu SQL Server 2008. Wszystkie poprawki podane w dodatku Service Pack programu SQL Server są domyślnie zawarte w następnym dodatku Service Pack dla programu SQL Server.

SQL Server 2008 z dodatkiem Service Pack 2

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 3 dla programu SQL Server 2008 z dodatkiem Service Pack 2. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2498535 Pakiet aktualizacji zbiorczej 3 dla programu SQL Server 2008 z dodatkiem Service Pack 2Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2402659 Kompilacje programu SQL Server 2008 wydane po opublikowaniu dodatku Service Pack 2 dla programu SQL Server 2008 Poprawki programu Microsoft SQL Server 2008 są tworzone dla określonych pakietów Service Pack programu SQL Server. Musisz zastosować poprawkę dodatku Service Pack 2 dla programu SQL Server 2008 do instalacji dodatku Service Pack 2 do programu SQL Server 2008. Wszystkie poprawki podane w dodatku Service Pack programu SQL Server są domyślnie zawarte w następnym dodatku Service Pack dla programu SQL Server.

SQL Server 2008 R2 z dodatkiem Service Pack 1

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 1 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2544793 Pakiet aktualizacji zbiorczej 1 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2567616 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2008 R2

SQL Server 2008 R2

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 7. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2507770 Pakiet aktualizacji zbiorczej 7 dla programu SQL Server 2008 R2 Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

981356 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu programu SQL Server 2008 R2

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Obejście

Aby obejść ten problem, należy ponownie napisać zapytanie, aby w planie zapytania nie była używana funkcja DateDiff w predykatach. Na przykład następujące czynności mogą działać wolno:create procedure proc_test @date datetimeasselect COUNT (*) from t where c1 <DATEADD(mm, DATEDIFF(mm,0,dateadd(month, -6,@date)), 0) Aby obejść ten problem, można jednak napisać zapytanie jako następujące:create procedure proc_test2 @date datetimeasdeclare @datestr nvarchar(50), @sqlstr nvarchar(1024)set @datestr = CAST (DATEADD(mm, DATEDIFF(mm,0,dateadd(month, -6,@date)), 0) as nvarchar(50))set @sqlstr ='select COUNT (*) from t where c1 < ''' + @datestr + ''''exec (@sqlstr)

Informacje

Aby uzyskać więcej informacji dotyczących modelu obsługi przyrostowej dla programu SQL Server, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

935897 Model obsługi przyrostowej jest dostępny w zespole programu SQL Server w celu dostarczenia poprawek dotyczących zgłaszanych problemówAby uzyskać więcej informacji na temat schematu nazewnictwa dla aktualizacji programu SQL Server, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

822499 Nowy schemat nazewnictwa dla pakietów aktualizacji oprogramowania Microsoft SQL ServerAby uzyskać więcej informacji o terminologii dotyczącej aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×