INF: S? hi?u bi?t và gi?i quy?t v?n đ? ch?n SQL Server

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 224453 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Trong bài này, thu?t ng? "k?t n?i" đ? c?p đ?n m?t đơn đăng nh?p vào phiên c?a cơ s? d? li?u. M?i k?t n?i xu?t hi?n như m?t phiên ID (d?ch v? SPID). M?i ngư?i trong s? nh?ng SPID thư?ng đư?c g?i là m?t x? l?, m?c dù nó không ph?i là m?t b?i c?nh quá tr?nh riêng bi?t trong ? ngh?a thông thư?ng. Thay vào đó, m?i d?ch v? SPID bao g?m các máy ch? tài nguyên và d? li?u c?u trúc c?n thi?t đ? ph?c v? các yêu c?u c?a m?t k?t n?i duy nh?t t? m?t khách hàng nh?t đ?nh. Một ?ng d?ng khách hàng duy nh?t có th? có m?t ho?c nhi?u k?t n?i. T? các quan đi?m c?a SQL Server, không có s? khác nhau gi?a các k?t n?i nhi?u t? m?t ?ng d?ng khách hàng duy nh?t trên m?t máy tính khách hàng duy nh?t và nhi?u các k?t n?i t? nhi?u khách hàng ?ng d?ng ho?c nhi?u khách hàng máy tính. M?t trong nh?ng k?t n?i có th? ch?n k?t n?i khác, b?t k? c?a cho dù h? xông lên t? cùng m?t ?ng d?ng ho?c các ?ng d?ng riêng bi?t trên hai khách hàng khác nhau máy vi tính.

THÔNG TIN THÊM

Ch?n là m?t đ?c tính không th? tránh kh?i c?a b?t k? quan h? cơ s? d? li?u qu?n l? (RDBMS) v?i h? th?ng khóa d?a trên concurrency. Ngày SQL Server, ch?n x?y ra khi m?t trong nh?ng d?ch v? SPID gi? m?t ? khóa trên m?t ngu?n tài nguyên c? th? và m?t l?n th? hai D?ch v? SPID n? l?c đ? thu đư?c m?t lo?i khóa xung đ?t trên cùng m?t tài nguyên. Thông thư?ng, khung th?i gian mà d?ch v? SPID đ?u tiên khóa tài nguyên là r?t nh?. Khi nó phát hành các khóa, k?t n?i th? hai là mi?n phí đ? thu đư?c c?a nó s? h?u ? khóa trên các ngu?n tài nguyên và ti?p t?c x? l?. Đây là hành vi b?nh thư?ng và có th? x?y ra nhi?u l?n trong su?t quá tr?nh m?t ngày v?i không có hi?u l?c đáng chú ? ngày hi?u năng h? th?ng.

B?i c?nh th?i gian th?c hi?n và giao d?ch c?a m?t truy v?n xác đ?nh bao lâu các ? khóa đư?c t? ch?c và, do đó, tác đ?ng c?a h? ngày khác truy v?n. N?u truy v?n không đư?c th?c hi?n trong m?t giao d?ch (và không có g?i ? khóa đư?c s? d?ng), ? khóa cho ch?n phát bi?u ch? s? đư?c t? ch?c vào m?t ngu?n l?c lúc th?i gian nó th?c s? đư?c đ?c, không ph?i trong su?t th?i gian c?a các truy v?n. Cho CHÈN, C?p Nh?t, và xoá b? báo cáo, các ? khóa đư?c t? ch?c trong th?i gian các truy v?n, c? cho s? đ?ng b? d? li?u và cho phép truy v?n đ? đư?c quay ngư?c l?i N?u c?n thi?t.

Cho truy v?n th?c hi?n trong m?t giao d?ch, trong su?t th?i gian mà các ? khóa đư?c t? ch?c đư?c xác đ?nh b?i các lo?i truy v?n, nh?ng m?c đ? s? cô l?p c?a giao d?ch, và có ho?c không khóa g?i ? đư?c s? d?ng trong các truy v?n. Cho m?t mô t? khóa, khóa g?i ?, và s? cô l?p c?a giao d?ch m?c, xem các ch? đ? sau trong SQL Server sách tr?c tuy?n:
  • Khóa trong cơ s? d? li?u
  • Customizing khóa và hàng Versioning
  • Khóa ch? đ?
  • Khóa kh? năng tương thích
  • Hàng Versioning d?a trên m?c đ? s? cô l?p trong cơ s? d? li?u
  • Vi?c ki?m soát các giao d?ch (cơ s? d? li?u)
Khi khóa và ch?n tăng đ?n đi?m nơi có m?t ?nh hư?ng b?t l?i cho hi?u năng h? th?ng, nó là thư?ng do m?t trong các l? do sau đây:
  • M?t d?ch v? SPID gi? ? khóa trên m?t t?p h?p các ngu?n l?c cho m?t m? r?ng kho?ng th?i gian trư?c khi phát hành chúng. Lo?i ch?n gi?i quy?t chính nó theo th?i gian, nhưng có th? gây ra s? xu?ng c?p hi?u su?t.
  • M?t d?ch v? SPID gi? ? khóa trên m?t t?p h?p các ngu?n l?c và không bao gi? phát hành h?. Lo?i ch?n không gi?i quy?t chính nó và ngăn ch?n truy c?p vào các ?nh hư?ng đ?n ngu?n tài nguyên vô th?i h?n.
Trong k?ch b?n đ?u tiên ? trên, ch?n v?n đ? gi?i quy?t riêng c?a m?nh theo th?i gian v? d?ch v? SPID b?n phát hành các âu thuy?n. Tuy nhiên, t?nh h?nh có th? r?t ch?t l?ng như khác nhau SPID gây ra ch?n v? tài nguyên khác nhau theo th?i gian, t?o m?t m?c tiêu di đ?ng. V? l? do này, các t?nh hu?ng có th? đư?c khó khăn đ? g? r?i b?ng cách s? d?ng qu?n l? SQL máy ch? doanh nghi?p ho?c cá nhân truy v?n SQL. Các t?nh h?nh th? hai k?t qu? trong m?t nhà nư?c th?ng nh?t mà có th? d? dàng hơn đ? ch?n đoán.

T?p h?p ch?n thông tin

Đ? ch?ng l?i nh?ng khó khăn trong x? l? s? c? ch?n v?n đ?, m?t ngư?i qu?n tr? cơ s? d? li?u có th? s? d?ng t?p l?nh SQL liên t?c giám sát bang khóa và ch?n trên máy ch? SQL. Các script có th? cung c?p ?nh ch?p nhanh c?a trư?ng h?p c? th? theo th?i gian, d?n đ?n m?t b?c tranh t?ng th? c?a các v?n đ?. Cho m?t mô t? làm th? nào đ? giám sát ch?n v?i t?p l?nh SQL, xem các bài vi?t sau trong cơ s? ki?n th?c Microsoft:
271509 Làm th? nào đ? giám sát ch?n trong SQL Server 2005 và trong SQL Server 2000
Các k?ch b?n trong bài vi?t này s? th?c hi?n các tác v? dư?i đây. N?u có th?, phương pháp cho vi?c thu th?p thông tin này t? SQL Server Management Studio đư?c đưa ra.
  1. Xác đ?nh d?ch v? SPID (Session ID) ? đ?u c?a d?y núi ch?n và các l?nh SQL.
    Thêm vào b?ng cách s? d?ng các k?ch b?n trong bài vi?t cơ s? ki?n th?c đ? đ? c?p, b?n có th? nh?n bi?t ngư?i đ?ng đ?u c?a chu?i ch?n b?ng cách s? d?ng các tính năng đư?c cung c?p thông qua SQL Server Management Studio. Để thực hiện việc này, sử dụng một trong các phương pháp sau:
    • Nh?p chu?t ph?i vào đ?i tư?ng máy ch?, m? r?ng Báo cáo, m? r?ng Báo cáo tiêu chu?n, và sau đó nh?p vào Ho?t đ?ng-ch?n t?t c? các giao d?ch. Báo cáo này cho th?y các giao d?ch ? ph?n đ?u c?a ch?n chu?i. N?u b?n m? r?ng các giao d?ch, báo cáo s? cho th?y các giao d?ch đang b? ch?n b?i các giao d?ch đ?u. Báo cáo này c?ng s? hi?n th? các "ch?n SQL Statement" và "B? ch?n SQL Statement."
    • S? d?ng DBCC INPUTBUFFER (<spid>) đ? t?m các báo cáo trư?c đó đ? đư?c g?i c?a m?t d?ch v? SPID.</spid>
  2. T?m th?y các giao d?ch làm t? c?p và quá tr?nh tr?ng thái c?a d?ch v? SPID ch?n.
    Các giao d?ch làm t? c?p c?a m?t d?ch v? SPID có s?n trong các @@ TRANCOUNT bi?n toàn c?u. Tuy nhiên, nó có th? đư?c xác đ?nh t? bên ngoài các D?ch v? SPID b?i câu các sysprocesses b?ng như sau:

    SELECT open_tran FROM master.sys.sysprocesses WHERE SPID=<blocking SPID number>
    go
    						
    Giá tr? tr? l?i là giá tr? @@ TRANCOUNT cho d?ch v? SPID. Đi?u này cho th?y giao d?ch làm t? c?p cho d?ch v? SPID ch?n, mà l?n lư?t có th? gi?i thích t?i sao nó đang n?m gi? ? khóa. Ví d?, n?u giá tr? l?n hơn 0, các D?ch v? SPID là ? gi?a c?a m?t giao d?ch (trong trư?ng h?p nó là d? ki?n r?ng nó» gi? l?i m?t s? ? khóa nó đ? mua, tùy thu?c vào s? cô l?p c?a giao d?ch c?p).

    B?n c?ng có th? ki?m tra xem n?u b?t k? lâu dài m? giao d?ch t?n t?i trong cơ s? d? li?u b?ng cách s? d?ng DBCC OPENTRANdatabase_name.

Thu th?p thông tin water Profiler SQL Server

Ngoài các thông tin trên, nó là thư?ng c?n thi?t đ? n?m b?t m?t Profiler d?u v?t c?a các ho?t đ?ng trên máy ch? đ? tri?t đ? đi?u tra m?t ch?n v?n đ? trên máy ch? SQL. N?u m?t d?ch v? SPID th?c hi?n nhi?u phát bi?u trong m?t giao d?ch, ch? statementthat cu?i cùng đ? đư?c g?i s? hi?n th? trong các báo cáo, b? đ?m đ?u vào ho?c đ?u ra màn h?nh ho?t đ?ng. Tuy nhiên, m?t trong các l?nh trư?c đó có th? là l? do ? khóa v?n c?n đang đư?c t? ch?c. M?t d?u v?t Profiler s? cho phép b?n xem t?t c? các l?nh th?c thi b?i m?t d?ch v? SPID trong giao d?ch hi?n t?i. Các bư?c sau giúp b?n thi?t l?p SQL Server Profiler đ? n?m b?t m?t d?u v?t.
  1. M? SQL Server Profiler.
  2. Trên các Tệp tr?nh đơn, đi?m đ?n M?i, và sau đó nh?p vào D?u v?t.
  3. Trên các T?ng quát tab, ch? đ?nh m?t tên d?u v?t và tên t?p đ? n?m b?t d? li?u đ?n.

    Quan tr?ng T?p d?u v?t nên đư?c ghi vào m?t đ?a nhanh đ?a phương ho?c đư?c chia s?. Tránh truy t?m đ?n m?t ? đ?a ho?c m?ng ch?m. C?ng ch?c ch?n r?ng máy ch? quá tr?nh water d? li?u đư?c ch?n.
  4. Trên các L?a ch?n các s? ki?n tab, nh?n vào đây đ? ch?n các Hi?n th? t?t c? các s? ki?n và các Hi?n th? t?t c? các c?t h?p ki?m.
  5. Trên các L?a ch?n các s? ki?n tab, thêm các lo?i s? ki?n đư?c li?t kê trong b?ng 1 vào d?u v?t c?a b?n.

    Ngoài ra, b?n có th? bao g?m các lo?i s? ki?n b? sung đư?c li?t kê trong b?ng 2 cho bi?t thêm thông tin. N?u b?n đang ch?y trong m?t môi trư?ng s?n xu?t âm lư?ng cao, b?n có th? quy?t đ?nh s? d?ng ch? là nh?ng s? ki?n trong b?ng 1, v? chúng đ? đư?c thư?ng đ? đ? g? r?i các v?n đ? nh?t ch?n. Bao g?m các s? ki?n b? sung trong b?ng 2 có th? làm cho nó d? dàng hơn đ? nhanh chóng xác đ?nh ngu?n g?c c?a v?n đ? (ho?c nh?ng s? ki?n này có th? c?n thi?t đ? xác đ?nh các tuyên b? th? ph?m trong th? t?c multi-statement). Tuy nhiên, bao g?m các s? ki?n trong b?ng 2 s? c?ng thêm vào t?i trên h? th?ng và tăng kích thư?c đ?u ra d?u v?t.
B?ng 1: S? ki?n lo?i
Thu g?n b?ng nàyBung r?ng b?ng này
Tiêu đ?S? ki?n
L?i và c?nh báoNgo?i l?
L?i và c?nh báoS? chú ?
Ki?m toán b?o m?tĐăng nh?p ki?m toán
Ki?m toán b?o m?tKi?m toán Logout
SessionsK?t n?i hi?n có
Th? t?c đư?c lưu tr?RPC: b?t đ?u
TSQLSQL:BatchStarting

B?ng 2: Các lo?i s? ki?n b? sung
Thu g?n b?ng nàyBung r?ng b?ng này
Tiêu đ?S? ki?n
Các giao d?chDTCTransaction
Các giao d?chSQLTransaction
Th? t?c đư?c lưu tr?RPC: hoàn thành
TSQLSQL:BatchCompleted
Th? t?c đư?c lưu tr?SP:StmtStarting
Th? t?c đư?c lưu tr?SP:StmtCompleted

Đ? bi?t thêm chi ti?t v? vi?c s? d?ng SQL Server Profiler, xin vui l?ng xem SQL Server Sách tr?c tuy?n.

Vi?c xác đ?nh và gi?i quy?t chung ch?n k?ch b?n

B?ng cách ki?m tra các thông tin trên, b?n có th? xác đ?nh nguyên nhân h?u h?t ch?n v?n đ?. Ph?n c?n l?i c?a bài vi?t này là m?t cu?c th?o lu?n làm th? nào đ? s? d?ng thông tin này đ? xác đ?nh và gi?i quy?t m?t s? k?ch b?n ch?n ph? bi?n. Th?o lu?n này gi? đ?nh b?n đ? s? d?ng các t?p l?nh ch?n trong bài vi?t 271509 tham (chi?u trư?c đó) đ? n?m b?t thông tin v? SPID ch?n và đ? th?c hi?n m?t d?u v?t Profiler v?i các s? ki?n đư?c mô t? ? trên.

Xem các t?p l?nh ch?n đ?u ra

Ki?m tra các sys.sysprocesses đ?u ra đ? xác đ?nh nh?ng ngư?i đ?ng đ?u c?a chu?i ch?n
N?u b?n không nêu r? nhanh ch? đ? cho các t?p l?nh ch?n, s? có m?t ph?n có tiêu đ? "SPID ? ph?n đ?u c?a ch?n chu?i" mà danh sách các SPID đang ch?n khác SPID trong đ?u ra k?ch b?n.
SPIDs at the head of blocking chains
N?u b?n ch? đ?nh các tùy ch?n nhanh, b?n v?n có th? xác đ?nh các ch?n đ?ng đ?u b?ng cách xem xét các sys.sysprocesses đ?u ra và theo h? th?ng phân c?p c?a d?ch v? SPID đư?c báo cáo trong c?t b? ch?n.
Ki?m tra các sys.sysprocesses đ?u ra cho thông tin v? SPID ? đ?u c?a d?y núi ch?n.
Nó là quan tr?ng đ? đánh giá như sau sys.sysprocesses các l?nh v?c:

Tr?ng thái

C?t này cho th?y các t?nh tr?ng c?a m?t d?ch v? SPID c? th?. Thông thư?ng, m?t ng? t?nh tr?ng cho th?y r?ng d?ch v? SPID đ? hoàn thành th?c hi?n và ch? đ?i cho các ?ng d?ng đ? g?i m?t truy v?n hay lô. Một Runnable, ch?y, ho?c sos_scheduler_yield t?nh tr?ng cho th?y r?ng d?ch v? SPID hi?n đang x? l? m?t truy v?n. Các B?ng sau cho gi?i thích ng?n g?n v? t?nh tr?ng khác nhau các giá tr?.
Thu g?n b?ng nàyBung r?ng b?ng này
Tr?ng thái? ngh?a
N?nD?ch v? SPID ch?y m?t n?n nhi?m v?, ch?ng h?n như b? t?c phát hi?n.
Ng?D?ch v? SPID không hi?n đang th?c hi?n. Đi?u này thư?ng ch? ra r?ng d?ch v? SPID đang ch? l?nh t? các ?ng d?ng.
Ch?yD?ch v? SPID hi?n đang ch?y trên m?t tr?nh lên l?ch.
RunnableD?ch v? SPID là trong hàng đ?i runnable m?t tr?nh lên l?ch và ch? đ?i đ? có đư?c l?p l?ch th?i gian.
Sos_scheduler_yieldD?ch v? SPID ch?y, nhưng nó đ? mang l?i t? nguy?n c?a nó th?i gian lát trên tr?nh l?p l?ch bi?u cho phép d?ch v? SPID khác đ? có đư?c l?p l?ch th?i gian.
Đ?nh ch?D?ch v? SPID ch? đ?i cho m?t s? ki?n, ch?ng h?n như m?t khóa ho?c m?t ch?t.
Quay ngư?c l?iD?ch v? SPID là trong cu?n ngư?c c?a m?t giao d?ch.
DefwakeupCh? ra r?ng d?ch v? SPID ch? đ?i cho m?t ngu?n tài nguyên đó là trong quá tr?nh đang đư?c gi?i thoát. L?nh v?c waitresource nên ch? ra các ngu?n tài nguyên trong câu h?i.

Open_tran

L?nh v?c này s? cho b?n bi?t các giao d?ch làm t? c?p c?a d?ch v? SPID. N?u giá tr? này là l?n hơn 0, d?ch v? SPID là trong ph?m vi m?t giao d?ch m? và có th? gi? ? khóa đư?c mua l?i b?i b?t k? tuyên b? trong v?ng giao d?ch.

Lastwaittype, waittype và waittime

Các lastwaittype l?nh v?c là m?t chu?i đ?i di?n c?a các waittype l?nh v?c này, mà là m?t c?t dành riêng n?i b? nh? phân. Nếu waittype là 0x0000, d?ch v? SPID không ph?i hi?n đang ch? đ?i b?t c? đi?u g? và các lastwaittype giá tr? ch? ra cu?i cùng waittype r?ng d?ch v? SPID đ? có. Nếu waittype không ph?i là zero, các lastwaittype giá tr? ch? ra hi?n nay waittype c?a d?ch v? SPID.

Cho m?t mô t? ng?n g?n v? s? khác nhau lastwaittypewaittype các giá tr?, xem các bài vi?t sau đây trong Microsoft Ki?n th?c cơ b?n:
822101 Mô t? c?a waittype và lastwaittype c?t trong b?ng master.dbo.sysprocesses trong SQL Server 2000 và SQL Server 2005
Để biết thêm thông tin về sys.dm_os_wait_stats, th?y SQL Server sách tr?c tuy?n.

Các waittime giá tr? có th? đư?c s? d?ng đ? xác đ?nh n?u d?ch v? SPID là làm cho ti?n b?. Khi m?t truy v?n đ?i v?i các sys.sysprocesses b?ng tr? v? m?t giá tr? trong các waittime c?t đó là ít hơn các waittime giá tr? t? m?t truy v?n trư?c đó c?a sys.sysprocesses, đi?u này ch? ra r?ng trư?c khi khóa đư?c mua l?i và phát hành và bây gi? ch? đ?i trên m?t ? khóa m?i (gi? s? không waittime). Đi?u này có th? đư?c ki?m ch?ng b?ng cách so sánh các waitresource gi?a sys.sysprocesses đ?u ra.

Waitresource

L?nh v?c này ch? ra các ngu?n tài nguyên r?ng m?t d?ch v? SPID ch? đ?i. B?ng sau đây li?t kê ph? bi?n waitresource đ?nh d?ng và ? ngh?a c?a h?:
Thu g?n b?ng nàyBung r?ng b?ng này
Tài nguyênĐịnh dạngVí d?
B?ngDatabaseID:ObjectID:IndexIDTH?: 5:261575970:1
Trong trư?ng h?p này, cơ s? d? li?u ID 5 là các quán rư?u m?u cơ s? d? li?u và đ?i tư?ng ID 261575970 là các tiêu đ? b?ng và 1 là ch? m?c t?p h?p.
TrangDatabaseID:FileID:PageIDTRANG: 5:1:104
Trong trư?ng h?p này, cơ s? d? li?u ID 5 là quán rư?u, t?p ID 1 là các t?p tin d? li?u chính, và trang 104 là m?t trang thu?c v? các tiêu đ? b?ng.

Đ? xác đ?nh các id đ?i tư?ng mà trang thu?c v?, s? d?ng l?nh DBCC trang (dbid, fileid, pageid, output_option), và xem xét m_objId. Ví dụ:
DBCC TRACEON ( 3604 )
DBCC PAGE ( 5 , 1 , 104 , 3 )
KeyDatabaseID:Hobt_id (giá tr? băm cho ch? s? khóa)KEY: 5:72057594044284928 (3300a4f361aa)

Trong trư?ng h?p này, cơ s? d? li?u ID 5 là quán rư?u, Hobt_ID 72057594044284928 tương ?ng v?i các nhóm index_id 2 cho đ?i tư?ng id 261575970)tiêu đ? b?ng). S? d?ng d?ng xem danh m?c sys.partitions liên k?t hobt_id đ? m?t c? th? ch? s? id và đ?i tư?ng id. Không có không có cách nào đ? unhash ch? s? ch? ch?t băm m?t giá tr? c? th? ch? s? ch? ch?t.
HàngDatabaseID:FileID:PageID:Slot(row)THOÁT: 5:1:104:3

Trong trư?ng h?p này, cơ s? d? li?u ID 5 là quán rư?u, t?p ID 1 là các t?p tin d? li?u chính, trang 104 là m?t trang thu?c v? tiêu đ? b?ng và khe 3 cho th?y v? trí c?a hàng trên trang.
Biên d?chDatabaseID:ObjectID [[biên d?ch]]TAB: 5:834102012 [[biên d?ch]] đi?u này không ph?i là m?t b?ng khóa, nhưng thay vào đó là m?t ? khóa biên d?ch trên m?t th? t?c đư?c lưu tr?. Cơ s? d? li?u ID 5 quán rư?u, đ?i tư?ng ID 834102012 th? t?c đư?c lưu tr? usp_myprocedure. Xem kho tàng ki?n th?c bài 263889 cho thêm thông tin v? ch?n gây ra b?i biên d?ch ? khóa.
C?t khác

C?n l?i sys.sysprocesses c?t có th? cung c?p cái nh?n sâu s?c vào g?c r? c?a m?t v?n đ? là t?t. Tính h?u d?ng c?a h? khác nhau tùy thu?c vào hoàn c?nh c?a v?n đ?. Cho Ví d?, b?n có th? xác đ?nh n?u v?n đ? x?y ra ch? t? m?t s? khách hàng (hostname), trên m?t s? m?ng thư vi?n (net_library), khi nh?ng đ?t cu?i G?i b?i m?t d?ch v? SPID là (last_batch), vv.
Ki?m tra k?t xu?t DBCC INPUTBUFFER.
Cho b?t k? d?ch v? SPID ? ph?n đ?u c?a m?t chu?i ch?n ho?c v?i m?t không waittype, các t?p l?nh ch?n s? th?c hi?n DBCC INPUTBUFFER đ? xác đ?nh các truy v?n hi?n t?i cho r?ng d?ch v? SPID.

Trong nhi?u trư?ng h?p, đây là các truy v?n đó gây ra các ? khóa mà đang ch?n ngư?i dùng khác s? đư?c t? ch?c. Tuy nhiên, n?u d?ch v? SPID là trong v?ng m?t giao d?ch, các ? khóa có th? đư?c mua l?i b?i m?t truy v?n trư?c đó b? hành quy?t, không ph?i là m?t hi?n t?i. V? v?y, b?n c?ng nên xem ra Profiler cho d?ch v? SPID, không ch? inputbuffer.

Chú ý B?i v? các t?p l?nh ch?n bao g?m nhi?u bư?c, nó là có th? m?t d?ch v? SPID có th? xu?t hi?n trong ph?n đ?u tiên là ngư?i đ?ng đ?u m?t ch?n chu?i, nhưng theo th?i gian truy v?n DBCC INPUTBUFFER đư?c thi hành, nó không c?n ch?n và INPUTBUFFER không b? b?t. Đi?u này ch? ra r?ng các ch?n vi?c gi?i quy?t chính nó cho d?ch v? SPID đó và nó có th? ho?c có th? không có m?t v?n đ?. T?i đây đi?m, b?n có th? ho?c là dùng phiên b?n nhanh chóng c?a các t?p l?nh ch?n đ? c? g?ng đ?m b?o b?n n?m b?t inputbuffer trư?c khi nó xóa (dù không v?n không có đ?m b?o), ho?c xem d? li?u h? sơ t? đó khung th?i gian đ? xác đ?nh nh?ng g? truy v?n d?ch v? SPID th?c hi?n.

Xem d? li?u h? sơ

Xem d? li?u h? sơ hi?u qu? là r?t có giá tr? trong gi?i quy?t các v?n đ? ch?n. Đi?u quan tr?ng nh?t đ? nh?n ra là b?n làm không ph?i nh?n vào t?t c? m?i th? b?n b?t; đư?c ch?n l?c. Cung c?p h? sơ kh? năng đ? giúp b?n có hi?u qu? xem các d? li?u đư?c quay. Trong các Thu?c tính h?p tho?i (trên các Tệp tr?nh đơn, nh?p vào Thu?c tính), Profiler cho phép b?n đ? gi?i h?n các d? li?u đư?c hi?n th? b?ng cách lo?i b? d? li?u c?t ho?c s? ki?n, nhóm (phân lo?i) b?i d? li?u c?t và áp d?ng các b? l?c. B?n có th? t?m ki?m d?u v?t toàn b? ho?c ch? có m?t c?t c? th? cho c? th? các giá tr? (trên các Ch?nh s?a tr?nh đơn, nh?p vào T?m). B?n c?ng có th? lưu d? li?u h? sơ vào m?t b?ng SQL Server (ngày các Tệp tr?nh đơn, đi?m đ?n Löu laøm và sau đó nh?p vào B?ng) và ch?y truy v?n SQL ch?ng l?i nó.

H?y c?n th?n r?ng b?n th?c hi?n l?c ch? vào m?t t?p tin đ? lưu trư?c đó water. N?u b?n th?c hi?n các bư?c trên m?t d?u v?t c?a ho?t đ?ng, b?n nguy cơ m?t d? li?u đ? b? b?t v? v?t đ? đư?c b?t đ?u. Lưu m?t ho?t đ?ng theo d?i vào m?t t?p tin ho?c b?ng đ?u tiên (trên các Tệp tr?nh đơn, nh?p vào Löu laøm) và sau đó m? l?i nó (trên các Tệp tr?nh đơn, nh?p vào M?) trư?c khi ti?p t?c. Khi làm vi?c trên m?t t?p tin đ? lưu water, các l?c không lo?i v?nh vi?n b? d? li?u đang đư?c l?c ra, nó ch? không không hi?n th? t?t c? các d? li?u. B?n có th? thêm và lo?i b? các s? ki?n và d? li?u c?t như c?n thi?t đ? giúp t?p trung t?m ki?m c?a b?n.

Đi?u g? đ? t?m:
  • Nh?ng g? l?nh có d?ch v? SPID ? ph?n đ?u c?a m?t chu?i ch?n th?c hi?n trong giao d?ch hi?n t?i?
    L?c d? li?u d?u v?t cho m?t d?ch v? SPID đ?c bi?t là ? ph?n đ?u c?a m?t chu?i ch?n (trên các Tệp tr?nh đơn, nh?p vào Thu?c tính; sau đó vào các Các b? l?c ghi th? r? giá tr? d?ch v? SPID). B?n có th? sau đó ki?m tra các l?nh nó đ? th?c hi?n trư?c khi đ?n th?i đi?m nó ch?n khác SPID. N?u b?n bao g?m các Các s? ki?n giao d?ch, h? có th? d? dàng xác đ?nh khi m?t giao d?ch đ? đư?c b?t đ?u. N?u không, b?n có th? t?m ki?m các Văn b?n c?t đ? b?t đ?u, ti?t ki?m, cam k?t ho?c quay ngư?c l?i giao d?ch ho?t đ?ng kinh doanh. S? d?ng các open_tran giá tr? t? các sysprocesses b?ng đ? đ?m b?o r?ng b?n n?m b?t t?t c? các s? ki?n giao d?ch. Hi?u bi?t các l?nh hành quy?t và b?i c?nh giao d?ch s? cho phép b?n xác đ?nh l? do t?i sao m?t d?ch v? SPID đang n?m gi? ? khóa.

    H?y nh? r?ng, b?n có th? lo?i b? các s? ki?n và d? li?u c?t. Thay v? c?a nh?n vào c? hai b?t đ?u và hoàn thành các s? ki?n, ch?n m?t. N?u SPID ch?n không th? t?c đư?c lưu tr?, lo?i b? cácSP: b?t đ?u ho?c SP: hoàn thành các s? ki?n; các SQLBatchRPC s? ki?n s? hi?n th? các cu?c g?i th? t?c. Ch? xem các s? ki?n SP khi b?n c?n ph?i th?y r?ng m?c đ? chi ti?t.
  • Trong su?t th?i gian c?a các truy v?n cho SPID lúc đ?u là g? c?a ch?n chu?i?
    N?u b?n bao g?m các s? ki?n đ? hoàn thành ? trên, các Th?i gian c?t s? hi?n th? th?i gian th?c hi?n truy v?n. Đi?u này có th? giúp b?n xác đ?nh dài ch?y truy v?n đang gây ra ch?n. Đ? xác đ?nh l? do t?i sao các truy v?n th?c hi?n t? t?, xem các CPU, Đọc, và Vi?t c?t, c?ng như các Th?c hi?n k? ho?ch s? ki?n.

Phân lo?i k?ch b?n ch?n ph? bi?n

B?ng dư?i đây các b?n đ? tri?u ch?ng ph? bi?n đ? có th? x?y ra nguyên nhân c?a h?. S? ch? ra trong các K?ch b?n c?t tương ?ng v?i m?t s? trong nh?ng "thư?ng ch?n K?ch b?n và ngh? quy?t"ph?n c?a bài vi?t này dư?i đây. Các Waittype, Open_Tran, và Tr?ng thái c?t tham khaûo sysprocesses thông tin. Các Gi?i quy?t? c?t ch? ra ho?c không ch?n s? gi?i quy?t trên c?a nó riêng.

Thu g?n b?ng nàyBung r?ng b?ng này
K?ch b?nWaittypeOpen_TranTr?ng tháiGi?i quy?t?Khác Hiện tượng
1Non-zero>= 0RunnableCó, khi k?t thúc truy v?n.Physical_IO, CPU và/ho?c Memusage c?t s? tăng lên theo th?i gian. Th?i gian cho truy v?n s? cao khi hoàn thành.
20x0000> 0ng?Không nhưng d?ch v? SPID có th? s? b? gi?t.M?t tín hi?u s? quan tâm có th? đư?c nh?n th?y trong h? sơ d?u v?t cho d?ch v? SPID này, ch? m?t th?i gian ch? truy v?n ho?c h?y b? đ? x?y ra.
30x0000> = 0RunnableKhông. S? không gi?i quy?t cho đ?n khi khách hàng fetches t?t c? các hàng ho?c đóng k?t n?i. Có th? d?ch v? SPID b? gi?t, nhưng nó có th? m?t đ?n 30 giây.N?u open_tran = 0, và d?ch v? SPID gi? ? khóa trong khi s? cô l?p c?a giao d?ch đô th? này có m?c đ? m?c đ?nh (đ?c COMMMITTED), đây là m?t nguyên nhân có kh? năng.
4Thay đ?i> = 0RunnableKhông. S? không gi?i quy?t cho đ?n khi khách hàng h?y b? truy v?n ho?c đóng các k?t n?i. Có th? SPID b? gi?t, nhưng có th? m?t đ?n 30 giây.Các tên mi?n máy ch? c?t trong sysprocesses cho d?ch v? SPID ? ph?n đ?u c?a m?t chu?i ch?n s? gi?ng như m?t trong d?ch v? SPID nó ngăn ch?n.
50x0000> 0quay ngư?c l?iCó.M?t s? chú ? tín hi?u có th? đư?c nh?n th?y trong d?u v?t Profiler cho d?ch v? SPID này, ch? ra m?t th?i gian ch? truy v?n ho?c h?y b? đ? x?y ra, ho?c ch? đơn gi?n là m?t tuyên b? quay ngư?c l?i đ? Ban hành.
60x0000> 0ng?Cu?i cùng. Khi Windows NT s? xác đ?nh phiên giao d?ch là không có ho?t đ?ng lâu hơn, SQL Server k?t n?i s? đư?c chia.Các last_batch giá tr? s?n xu?t sysprocesses là nhi?u s?m hơn th?i gian hi?n nay.

Ph? bi?n ch?n k?ch b?n và ngh? quy?t

Các k?ch b?n đư?c li?t kê dư?i đây s? có các đ?c tính đư?c li?t kê trong b?ng ? trên. Ph?n này cung c?p thêm chi ti?t khi áp d?ng, c?ng như các đư?ng d?n đ?n đ? phân gi?i.
  1. Ch?n do thư?ng ch?y truy v?n v?i m?t th?i gian dài th?c hi?n

    ?? phân gi?i:
    Các gi?i pháp cho lo?i h?nh ch?n v?n đ? này là đ? t?m ki?m cách đ? t?i ưu hóa các truy v?n. Trên th?c t?, l?p ch?n v?n đ? này có th? ch? là m?t v?n đ? hi?u su?t, và yêu c?u b?n ph?i theo đu?i nó như v?y. Đ? có thông tin ngày x? l? s? c? m?t truy v?n c? th? ch?y ch?m, xem bài vi?t cơ s? ki?n th?c Microsoft sau:
    243589 Làm th? nào đ? kh?c ph?c s? c? truy v?n ch?m-ch?y SQL Server 7.0 ho?c trên phiên b?n m?i nh?t
    Cho hi?u su?t t?ng th? ?ng d?ng x? l? s? c?, xem bài vi?t cơ s? ki?n th?c sau:
    224587 Làm th? nào đ?: G? r?i ?ng d?ng hi?u su?t v?i SQL Server
    Đ? bi?t thêm chi ti?t, xem các Hi?u su?t giám sát và đi?u ch?nh các ch? đ? làm th? nào đ? SQL Server 2008 sách tr?c tuy?n ch? đ? trên MSDN Web site sau:
    http://MSDN.Microsoft.com/en-US/Library/ms187830.aspx
    N?u b?n có m?t truy v?n dài ch?y là ch?n ngư?i dùng khác và có th? không t?i ưu hóa, xem xét vi?c di chuy?n nó t? m?t OLTP môi trư?ng đ? m?t h? th?ng h? tr? quy?t đ?nh.
  2. Ch?n gây ra b?i m?t d?ch v? SPID ng? mà đ? m?t theo d?i c?a giao d?ch làm t? c?p

    Lo?i ch?n thư?ng có th? đư?c xác đ?nh b?i m?t d?ch v? SPID đó ng?, ho?c đang ch? m?t l?nh, đư?c nêu ra mà giao d?ch làm t? c?p (@@ TRANCOUNT, open_tran t? sysprocesses) là l?n hơn 0. Đi?u này có th? x?y ra n?u các ?ng d?ng kinh nghi?m m?t th?i gian ch? truy v?n, ho?c các v?n đ? m?t h?y b? mà không có c?ng phát hành các yêu c?u s? ROLLBACK và/ho?c cam k?t báo cáo. Khi nh?n đư?c m?t d?ch v? SPID m?t th?i gian ch? truy v?n ho?c h?y b?, nó s? ch?m d?t truy v?n hi?n t?i và hàng lo?t, nhưng không t? đ?ng cu?n ngư?c ho?c cam k?t giao d?ch. ?ng d?ng này ch?u trách nhi?m v? đi?u này, như SQL Server không th? gi? đ?nh r?ng m?t giao d?ch toàn b? ph?i đư?c cu?n ngư?c l?i ch? đơn gi?n là nh? m?t truy v?n duy nh?t đang đư?c h?y b?. Truy v?n th?i gian ch? ho?c h?y b? s? xu?t hi?n như m?t s? ki?n tín hi?u s? chú ? cho d?ch v? SPID trong các Profiler water.

    Đ? ch?ng minh đi?u này, v?n đ? truy v?n đơn gi?n sau đây t? truy v?n Analyzer:

    BEGIN TRAN 
    SELECT * FROM SYSOBJECTS S1, SYSOBJECTS S2
    
    -- Issue this after canceling query
    SELECT @@TRANCOUNT
    ROLLBACK TRAN
    						
    Trong khi các truy v?n th?c hi?n, nh?p vào màu đ? H?y b? nút. Sau khi truy v?n đư?c h?y b?, ch?n @@ TRANCOUNT ch? ra r?ng giao d?ch làm t? c?p là m?t trong. Đi?u này đ? là xóa b? m?t ho?c m?t b?n C?p Nh?t truy v?n, ho?c có HOLDLOCK đư?c s? d?ng trên nh?ng l?a ch?n, t?t c? các ? khóa đư?c mua s? v?n đư?c t? ch?c. Ngay c? v?i các truy v?n ? trên, n?u m?t truy v?n đ? mua l?i và t? ch?c khóa trư?c đó trong các giao d?ch, h? s? v?n đư?c t? ch?c khi các bên trên CH?N đ? b? h?y b?.

    Ngh? quy?t:

    • Các ?ng d?ng ph?i đúng cách qu?n l? giao d?ch làm t? c?p, ho?c h? có th? gây ra m?t v?n đ? ch?n sau vi?c h?y b? các truy v?n theo cách này. Đi?u này có th? đư?c th?c hi?n trong m?t trong m?t s? cách:
      1. Trong x? l? l?i c?a ?ng d?ng khách hàng, g?i m?t n?u @@ TRANCOUNT > 0 ROLLBACK tr?n sau b?t k? l?i, ngay c? khi các ?ng d?ng khách không tin m?t giao d?ch là m?. Đi?u này là c?n thi?t, b?i v? m?t th? t?c đư?c lưu tr? g?i là trong lô có th? đ? b?t đ?u m?t giao d?ch mà không có ki?n th?c ?ng d?ng khách. Lưu ? r?ng m?t s? đi?u ki?n, ch?ng h?n như truy v?n, hu? ngăn các th? t?c thi công qua các báo cáo hi?n t?i, v? v?y ngay c? khi các th? t?c có logic đ? ki?m tra n?u @@ L?I <> 0 và abort giao d?ch, m? quay ngư?c l?i này s? không th?c hi?n trong trư?ng h?p này.
      2. S? d?ng đ?t XACT_ABORT ON cho k?t n?i, ho?c trong b?t k? lưu tr? th? t?c mà b?t đ?u giao d?ch và không làm s?ch lên sau m?t l?i. Trong trư?ng h?p c?a m?t l?i th?i gian ch?y, thi?t đ?t này s? h?y b? b?t k? m? các giao d?ch và ki?m soát tr? l?i cho khách hàng. Lưu ? r?ng T-SQL phát bi?u sau nh?ng tuyên b? đ? gây ra l?i s? không đư?c th?c thi.
      3. N?u k?t n?i chia tài nguyên đang đư?c s? d?ng trong m?t ?ng d?ng đó s? m? ra k?t n?i và ch?y m?t s? truy v?n trư?c khi phát hành k?t n?i quay l?i h? bơi, ch?ng h?n như m?t ?ng d?ng d?a trên Web, t?m th?i vô hi?u hoá k?t n?i t?ng h?p có th? giúp làm gi?m b?t v?n đ? cho đ?n khi ?ng d?ng khách đư?c c?i ti?n đ? x? l? các l?i m?t cách thích h?p. B?i vô hi?u hoá k?t n?i t?ng h?p, phát hành k?t n?i s? gây ra m?t v?t l? đăng xu?t c?a k?t n?i máy ch? SQL, d?n đ?n máy ch? lăn tr? l?i b?t k? m? các giao d?ch.
      4. N?u k?t n?i t?ng h?p đư?c kích ho?t và các máy ch? đích là SQL Server 2000, nâng c?p máy tính khách hàng đ? MDAC 2,6 ho?c m?i hơn có th? mang l?i l?i ích. Phiên b?n này c?a các thành ph?n MDAC thêm m? tr?nh đi?u khi?n ODBC và OLE DB nhà cung c?p đ? cho k?t n?i s? đư?c "đ?t l?i" trư?c khi nó đư?c tái s? d?ng. Cu?c g?i này đ? sp_reset_connection h?y b? b?t k? máy ch? kh?i xư?ng các giao d?ch (DTC giao d?ch kh?i xư?ng b?i các ?ng d?ng khách hàng không b? ?nh hư?ng), đ?t l?i cơ s? d? li?u m?c đ?nh, đ?t tùy ch?n và vv. Chú ý r?ng k?t n?i không đư?c đ?t l?i cho đ?n khi nó đư?c tái s? d?ng t? h? bơi k?t n?i, do đó, nó có th? là m?t ngư?i s? d?ng có th? m? m?t giao d?ch và sau đó phát hành các k?t n?i đ?n h? bơi k?t n?i, nhưng nó có th? không đư?c tái s? d?ng cho m?t s? giây, trong th?i gian giao d?ch s? v?n m?. N?u k?t n?i là không đư?c tái s? d?ng, giao d?ch s? đư?c h?y b? khi k?t n?i l?n và đư?c l?y ra t? các h? bơi k?t n?i. V? v?y, nó là t?i ưu cho khách hàng ?ng d?ng đ? h?y b? giao d?ch c?a h? x? l? l?i ho?c s? d?ng đ?t XACT_ABORT ON đ? tránh ch?m tr? ti?m năng này.
    • Trên th?c t?, l?p ch?n v?n đ? này c?ng có th? m?t v?n đ? hi?u su?t, và yêu c?u b?n ph?i theo đu?i nó như v?y. N?u truy v?n th?i gian th?c hi?n có th? đư?c gi?m b?t, th?i gian ch? truy v?n ho?c h?y b? s? không x?y ra. Nó là quan tr?ng là các ?ng d?ng có th? x? l? th?i gian ch? ho?c h?y b? k?ch b?n nên h? phát sinh, nhưng b?n c?ng có th? hư?ng l?i t? cách ki?m tra các hi?u su?t c?a các truy v?n.
  3. Ch?n gây ra b?i m?t d?ch v? SPID mà ?ng d?ng khách hàng tương ?ng không l?y t?t c? các k?t qu? hàng hoàn thành

    Sau khi g?i m?t truy v?n đ?n máy ch?, t?t c? các ?ng d?ng ngay l?p t?c ph?i l?y t?t c? các k?t qu? hàng đ? hoàn thành. N?u m?t ?ng d?ng nào không l?y t?t c? các k?t qu? hàng, ? khóa có th? đư?c trái trên bàn, ch?n khác ngư?i s? d?ng. N?u b?n đang s? d?ng m?t ?ng d?ng mà minh b?ch n?p SQL báo cáo đ?n máy ch?, các ?ng d?ng ph?i l?y t?t c? các k?t qu? hàng. N?u nó không (và n?u nó không th? đư?c c?u h?nh đ? làm như th?), b?n có th? không có kh? năng gi?i quy?t ch?n v?n đ?. Đ? tránh v?n đ? này, b?n có th? h?n ch? ho?t đ?ng kém cư x? các ?ng d?ng đ? báo cáo m?t ho?c quy?t đ?nh h? tr? cơ s? d? li?u.

    ?? phân gi?i:

    ?ng d?ng ph?i đư?c tái b?ng văn b?n đ? l?y t?t c? các hàng c?a k?t qu? đ? hoàn thành.
  4. Ch?n gây ra b?i m?t b? t?c phân ph?i c?a khách hàng/máy ch?

    Không gi?ng như m?t b? t?c thông thư?ng, m?t b? t?c phân ph?i không ph?i là phát hi?n b?ng cách s? d?ng tr?nh qu?n l? khóa RDBMS. Đi?u này là do th?c t? là duy nh?t c?a các ngu?n l?c tham gia vào b? t?c là m?t khóa SQL Server. Các phía bên kia c?a b? t?c là ? m?c đ? ?ng d?ng khách hàng, qua đó SQL H? ph?c v? đ? không ki?m soát. Sau đây là hai ví d? v? làm th? nào đi?u này có th? x?y ra, và nh?ng cách có th? ?ng d?ng có th? tránh nó.

    1. Khách hàng/máy ch? phân ph?i b? t?c v?i m?t khách hàng duy nh?t Ch? đ?
      N?u khách hàng có nhi?u m? các k?t n?i, và m?t ch? đ? duy nh?t c?a th?c hi?n, b? t?c phân ph?i sau đây có th? x?y ra. Cho ng?n g?n, c?m t? "dbproc" đư?c s? d?ng ? đây nói đ?n c?u trúc k?t n?i khách hàng.

       SPID1------blocked on lock------->SPID2
        /\                         (waiting to write results         
        |                           back to client)
        |                                 |
        |                                 |                      Server side
        | ================================|==================================
        |     <-- single thread -->       |                      Client side
        |                                 \/ 
       dbproc1   <-------------------   dbproc2
       (waiting to fetch             (effectively blocked on dbproc1, awaiting
        next row)                     single thread of execution to run)
      								
      Trong trư?ng h?p hi?n th? ? trên, m?t ch? đ? ?ng d?ng khách hàng duy nh?t có hai k?t n?i m?. Nó không đ?ng b? n?p m?t ho?t đ?ng SQL ngày dbproc1. Đi?u này có ngh?a là nó không ph?i ch? vào các cu?c g?i tr? l?i trư?c khi ti?p t?c. Các ?ng d?ng sau đó n?p m?t SQL thao tác trên dbproc2, và đang ch? các k?t qu? đ? b?t đ?u x? l? d? li?u tr? l?i. Khi d? li?u kh?i đ?ng tr? l?i (cho dù dbproc đ?u tiên đáp ?ng--gi? đ?nh đây là dbproc1), nó x? l? đ? hoàn thành t?t c? các d? li?u tr? l?i vào đó dbproc. Nó fetches k?t qu? t? dbproc1 cho đ?n khi SPID1 b? ch?n trên m?t khóa đư?c t? ch?c b?i SPID2 (b?i v? hai truy v?n đang ch?y không đ?ng b? trên máy ch?). T?i th?i đi?m này, dbproc1 s? ch? vô th?i h?n cho nhi?u d? li?u. SPID2 không b? ch?n trên m?t ? khóa, nhưng c? g?ng g?i d? li?u cho các khách hàng, dbproc2. Tuy nhiên, dbproc2 có hi?u qu? b? ch?n trên dbproc1 ? l?p ?ng d?ng như s?i ch? duy nh?t th?c hi?n cho các ?ng d?ng đang dùng b?i dbproc1. Đi?u này k?t qu? trong m?t b? t?c r?ng máy ch? SQL không th? phát hi?n ho?c gi?i quy?t b?i v? ch? có m?t trong các ngu?n tài nguyên liên quan là m?t SQL Tài nguyên máy ch?.
    2. Khách hàng/máy ch? phân ph?i b? t?c v?i m?t Thread trên m?i K?t n?i

      Th?m chí n?u m?t thread riêng bi?t t?n t?i cho t?ng k?t n?i ngày khách hàng, m?t bi?n th? c?a này b? t?c phân ph?i th? x?y v?n ra như đư?c hi?n th? b?i sau đây.

      SPID1------blocked on lock-------->SPID2
        /\                         (waiting on net write)        Server side
        |                                 |
        |                                 |
        | INSERT                          |SELECT
        | ================================|==================================
        |     <-- thread per dbproc -->   |                      Client side
        |                                 \/ 
       dbproc1   <-----data row-------   dbproc2
       (waiting on                     (blocked on dbproc1, waiting for it
        insert)                         to read the row from its buffer)
      								
      Trư?ng h?p này là tương t? v?i ví d? A, ngo?i tr? dbproc2 và SPID2 ch?y m?t tuyên b? ch?n v?i ? đ?nh th?c hi?n hàng t?i m?t th?i gian ch? bi?n và bàn giao m?i hàng thông qua m?t b? đ?m đ? dbproc1 cho m?t CHÈN, C?p Nh?t, ho?c xóa tuyên b? vào cùng m?t b?ng. Cu?i cùng, SPID1 (bi?u di?n INSERT, UPDATE, ho?c xóa) s? tr? thành b? ch?n trên m?t khóa đư?c t? ch?c b?i SPID2 (th?c hi?n nh?ng l?a ch?n). SPID2 vi?t liên ti?p k?t qu? đ? dbproc2 khách hàng. Dbproc2 sau đó c? g?ng đ? vư?t qua d?ng trong m?t b? đ?m đ? dbproc1, nhưng th?y dbproc1 là b?n r?n (nó b? ch?n ch? đ?i ngày SPID1 đ? k?t thúc CHÈN hi?n t?i, đó là b? ch?n trên SPID2). T?i th?i đi?m này, dbproc2 b? ch?n t?i l?p ?ng d?ng b?i dbproc1 mà d?ch v? SPID (SPID1) ? c?p đ? cơ s? d? li?u b? ch?n SPID2. M?t l?n n?a, Đi?u này k?t qu? trong m?t b? t?c mà SQL Server không th? phát hi?n ho?c gi?i quy?t b?i v? ch? là m?t trong các ngu?n tài nguyên liên quan là m?t ngu?n tài nguyên máy ch? SQL.
    C? hai ví d? a và b là cơ b?n các v?n đ? mà các nhà phát tri?n ?ng d?ng ph?i đư?c nh?n th?c c?a. H? ph?i m? các ?ng d?ng đ? x? l? nh?ng trư?ng h?p m?t cách thích h?p.

    Ngh? quy?t:

    Hai gi?i pháp đáng tin c?y là s? d?ng ho?c là m?t truy v?n th?i gian ch? ho?c k?t n?i b? ràng bu?c.

    • Th?i gian ch? truy v?n
      Khi m?t th?i gian ch? truy v?n đ? cung c?p, n?u b? t?c phân ph?i di?n ra, nó s? b? h?ng khi sau đó th?i gian ch? s? x?y ra. Xem thư vi?n DB ho?c tài li?u ODBC cho bi?t thêm thông tin v? cách s? d?ng m?t th?i gian ch? truy v?n.
    • Ràng bu?c các k?t n?i
      Tính năng này cho phép m?t khách hàng có nhi?u k?t n?i đ? ràng bu?c chúng vào m?t không gian c?a giao d?ch duy nh?t, v? v?y các k?t n?i không ch?n l?n nhau. Đ? bi?t thêm thông tin, h?y xem s? d?ng" Ràng bu?c các k?t n?i"ch? đ? trong SQL Server 7.0 sách tr?c tuy?n.
  5. Ch?n gây ra b?i m?t d?ch v? SPID trong m?t "vàng", ho?c quay ngư?c l?i, nhà nư?c

    M?t s?a đ?i d? li?u truy v?n đó đ? ch?t, ho?c h?y b? bên ngoài c?a m?t ngư?i dùng xác đ?nh giao d?ch, s? đư?c quay ngư?c l?i. Đi?u này c?ng có th? x?y ra như là m?t tác d?ng ph? c?a kh?i đ?ng các khách hàng máy tính l?i và phiên h?p m?ng c?a nó ng?t k?t n?i. Tương t? như v?y, m?t truy v?n ch?n là n?n nhân b? t?c s? đư?c quay ngư?c Quay l?i. M?t s?a đ?i d? li?u truy v?n thư?ng không th? đư?c cu?n ngư?c l?i b?t k? nhanh hơn các thay đ?i ban đ?u đư?c áp d?ng. Ví d?, n?u m?t xóa, CHÈN ho?c C?p Nh?t tuyên b? đ? ch?y cho m?t gi?, nó có th? m?t ít nh?t m?t gi? đ? cu?n Quay l?i. Đây là hành vi mong đ?i, b?i v? nh?ng thay đ?i đư?c th?c hi?n ph?i hoàn toàn ngư?c l?i, ho?c giao d?ch và v?t l? toàn v?n trong cơ s? d? li?u s? b? t?n h?i. B?i v? đi?u này ph?i x?y ra, SQL Server đánh d?u d?ch v? SPID trong m?t "vàng" ho?c quay ngư?c l?i nhà nư?c (có ngh?a là nó không th? b? gi?t ho?c đư?c ch?n như m?t b? t?c n?n nhân). Đi?u này thư?ng có th? đư?c xác đ?nh b?ng cách quan sát đ?u ra c?a sp_who, mà có th? ch? ra l?nh quay ngư?c l?i. Các Tr?ng thái c?t c?a sys.sysprocesses s? ch? ra m?t t?nh tr?ng quay ngư?c l?i, c?ng s? xu?t hi?n trong sp_who s?n lư?ng ho?c trong SQL Server Management Studio ho?t đ?ng màn h?nh.
    ?? phân gi?i:

    B?n ph?i ch? đ?i cho d?ch v? SPID đ? k?t thúc lăn tr? l?i các nh?ng thay đ?i đ? đư?c th?c hi?n.

    N?u máy ch? đóng c?a trong midst c?a thao tác này, cơ s? d? li?u s? trong ch? đ? ph?c h?i sau khi kh?i đ?ng l?i, và nó s? không th? ti?p c?n cho đ?n khi t?t c? các m? các giao d?ch đư?c th?c hi?n. Kh?i đ?ng ph?c h?i m?t cơ b?n cùng m?t lư?ng th?i gian cho m?i giao d?ch như th?i gian ch?y ph?c h?i, và cơ s? d? li?u là không th? ti?p c?n trong giai đo?n này. V? v?y, bu?c máy ch? xu?ng đ? s?a ch?a m?t d?ch v? SPID trong tr?ng thái quay ngư?c l?i s? thư?ng xuyên ph?n tác.

    Đ? tránh t?nh tr?ng này, không th?c hi?n vi?c l?n lô INSERT, UPDATE, ho?c xóa các ho?t đ?ng trong th?i gian b?n r?n gi? trên h? th?ng OLTP. N?u có th?, th?c hi?n các ho?t đ?ng trong giai đo?n ho?t đ?ng th?p.
  6. Ch?n gây ra b?i m?t k?t n?i m? côi

    N?u các b?y ?ng d?ng khách hàng ho?c khách hàng tr?m làm vi?c đư?c kh?i đ?ng l?i, các phiên h?p m?ng ph?c v? có th? không ngay l?p t?c b? h?y b? m?t s? đi?u ki?n. T? quan đi?m c?a máy ch?, các khách hàng v?n th? hi?n t?i, và b?t c? ? khóa có đư?c th? v?n gi? l?i. Đ? bi?t thêm thông tin, h?y b?m vào s? bài vi?t sau đ? xem bài vi?t trong Cơ s? Ki?n th?c Microsoft:
    137983Làm th? nào đ? kh?c ph?c s? c? k?t n?i m? côi trong SQL Server

    ?? phân gi?i:

    N?u ?ng d?ng khách đ? ng?t k?t n?i mà không c?n m?t cách thích h?p làm s?ch lên tài nguyên c?a nó, b?n có th? ch?m d?t d?ch v? SPID b?ng cách s? d?ng l?nh KILL. L?nh KILL m?t giá tr? d?ch v? SPID như đ?u vào. Ví d?, gi?t SPID 9, ch? đơn gi?n là v?n đ? l?nh sau:

    KILL 9
    						

    Chú ý L?nh KILL có th? m?t đ?n 30 giây đ? hoàn thành, do kho?ng th?i gian gi?a ki?m tra cho l?nh KILL.

S? tham gia c?a ?ng d?ng trong ch?n v?n đ?

Có th? có xu hư?ng t?p trung vào phía máy ch? đi?u ch?nh và n?n t?ng các v?n đ? khi ph?i đ?i m?t v?i m?t ch?n v?n đ?. Tuy nhiên, làm này thư?ng không d?n đ?n m?t đ? phân gi?i, và có th? h?p th? th?i gian và năng lư?ng t?t hơn hư?ng d?n t?i ki?m tra các ?ng d?ng khách hàng và các truy v?n đó n?p. Không có v?n đ? g? m?c đ? kh? năng hi?n th? các ?ng d?ng cho th?y nhi?u liên quan đ?n cơ s? d? li?u g?i là th?c hi?n, m?t ch?n v?n đ? Tuy nhiên thư?ng xuyên yêu c? hai vi?c ki?m tra c?a SQL phát bi?u chính xác g?i b?i các ?ng d?ng và các ?ng d?ng chính xác hành vi liên quan đ?n truy v?n h?y, qu?n l? k?t n?i, L?y t?t c? các k?t qu? hàng, và như v?y. N?u công c? phát tri?n không cho phép r? ràng ki?m soát qu?n l? k?t n?i, h?y b? truy v?n, truy v?n timeout, k?t qu? L?y, và như v?y, ngăn ch?n v?n đ? không th? resolvable. Ti?m năng này nên đư?c ki?m tra ch?t ch? trư?c khi ch?n m?t công c? phát tri?n ?ng d?ng cho SQL Server, đ?c bi?t là cho các doanh nghi?p quan tr?ng OLTP môi trư?ng.

Nó là quan tr?ng chăm sóc tuy?t v?i đư?c th?c hi?n trong giai đo?n thi?t k? và xây d?ng c?a cơ s? d? li?u và ?ng d?ng. Đ?c bi?t, tiêu th? tài nguyên, m?c đ? cách ly, và chi?u dài đư?ng d?n giao d?ch s? đư?c đánh giá cho m?i truy v?n. M?i truy v?n và giao d?ch ph?i càng nh? càng t?t. Tốt k? lu?t qu?n l? k?t n?i ph?i đư?c th?c hi?n. N?u đi?u này không th?c hi?n, nó là có th? các ?ng d?ng có th? xu?t hi?n đ? có hi?u su?t ch?p nh?n đư?c t?i th?p s? lư?ng ngư?i dùng, nhưng hi?u su?t có th? làm suy gi?m đáng k? s? c?a ngư?i s? d?ng quy mô tr? lên.

V?i đúng ?ng d?ng r?i truy v?n thi?t k?, Microsoft SQL Server là kh? năng h? tr? nhi?u ngàn đ?ng th?i ngư?i dùng trên m?t máy ch? duy nh?t, v?i ít ch?n.

Thu?c tính

ID c?a bài: 224453 - L?n xem xét sau cùng: 01 Tháng Chín 2011 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
T? khóa: 
kbsqlsetup kbhowto kbtshoot kbexpertiseinter kbinfo kbmt KB224453 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:224453

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com