Điểm:1

Đã giải quyết: Khắc phục sự cố Dọn dẹp Máy chủ WSUS khi xóa các bản cập nhật không cần thiết

lá cờ jp

WSUS luôn là nguyên nhân của mọi sự tồn tại của Quản trị viên CNTT. Bạn tìm thấy bao nhiêu chủ đề có cùng một vấn đề - trình hướng dẫn Dọn dẹp Máy chủ không thành công. Các văn bản dưới đây làm việc cho tôi.

Tôi đã thử vô số tập lệnh SQL từ Microsoft và trong phạm vi công cộng, tất cả đều có kết quả khác nhau. Tuần trước, máy chủ WSUS của chúng tôi lại bắt đầu phát ra những quả cầu lông nên tôi đã thanh toán tiền và mở một vé hỗ trợ. Văn bản bên dưới chính xác như nhận được từ bộ phận hỗ trợ của MS. Bước 8, trong trường hợp của tôi, mất hơn một ngày rưỡi để hoàn thành - và thậm chí như vậy với một số lỗi. Tôi đã bỏ qua những lỗi đó. Bước 9 diễn ra nhanh chóng nhưng cũng có một số lỗi. Tôi cũng bỏ qua những lỗi đó (lỗi bế tắc). Sau khi hoàn tất, tôi chạy lại trình hướng dẫn Dọn dẹp Máy chủ và nó chạy hoàn hảo. Tất cả đều được chạy trong SQL Server Management Studio và sử dụng WID.

Đây không phải là một câu hỏi, nhưng mục tiêu của tôi là cố gắng giúp các quản trị viên khác giải quyết các sự cố WSUS kinh niên này. Số dặm của bạn có thể rất - Tôi hy vọng điều này sẽ giúp một số bạn.

Vui lòng làm theo các bước được đề cập dưới đây:

--------------------------------------------- --------------------------------------------- ----------------------------------------

1) Lập chỉ mục lại:

SỬ DỤNG SUSDB; 
ĐI 
BẬT SỐ LƯỢNG; 
 
-- Xây dựng lại hoặc sắp xếp lại các chỉ mục dựa trên mức độ phân mảnh của chúng 
KHAI BÁO @work_to_do BẢNG ( 
    đối tượng int 
    , chỉ số int 
    , mật độ trang thả nổi 
    , phân mảnh float 
    , số int 
) 
 
KHAI BÁO @objectid int; 
KHAI BÁO @indexid int; 
KHAI BÁO @schemaname nvarchar(130);  
KHAI BÁO @objectname nvarchar(130);  
KHAI BÁO @indexname nvarchar(130);  
KHAI BÁO @numrows int 
KHAI BÁO @density float; 
KHAI BÁO @fragmentation float; 
KHAI BÁO @command nvarchar(4000);  
KHAI BÁO @fillfactorset bit 
KHAI BÁO @numpages int 
 
-- Chọn các chỉ mục cần được chống phân mảnh dựa trên những điều sau 
-- * Mật độ trang thấp 
-- * Phân mảnh bên ngoài cao liên quan đến kích thước chỉ mục 
IN 'Ước tính phân mảnh: Bắt đầu. ' + chuyển đổi (nvarchar, getdate(), 121)  
CHÈN @work_to_do 
LỰA CHỌN 
    f.object_id 
    , chỉ mục_id 
    , avg_page_space_used_in_percent 
    , avg_fragmentation_in_percent 
    , record_count 
TỪ  
    sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'SAMPLED') AS f 
Ở ĐÂU 
    (f.avg_page_space_used_in_percent < 85,0 và f.avg_page_space_used_in_percent/100,0 * page_count < page_count - 1) 
    hoặc (f.page_count > 50 và f.avg_fragmentation_in_percent > 15,0) 
    hoặc (f.page_count > 10 và f.avg_fragmentation_in_percent > 80,0) 
 
IN 'Số lượng chỉ mục cần xây dựng lại: ' + cast(@@ROWCOUNT as nvarchar(20)) 
 
IN 'Ước lượng phân mảnh: Hết. ' + chuyển đổi (nvarchar, getdate(), 121) 
 
CHỌN @numpages = tổng (ps.used_page_count) 
TỪ 
    @work_to_do AS fi 
    INNER THAM GIA sys.indexes AS i ON fi.objectid = i.object_id và fi.indexid = i.index_id 
    INNER THAM GIA sys.dm_db_partition_stats AS ps trên i.object_id = ps.object_id và i.index_id = ps.index_id 
 
-- Khai báo con trỏ cho danh sách chỉ mục cần xử lý. 
KHAI BÁO cur Indexes CON TRỎ ĐỂ CHỌN * TỪ @work_to_do 
 
-- Mở con trỏ. 
MỞ cur Indexes 
 
-- Lặp qua các chỉ mục 
TRONG KHI (1=1) 
BẮT ĐẦU 
    FETCH TIẾP THEO TỪ cur Indexes 
    VÀO @objectid, @indexid, @density, @fragmentation, @numrows; 
    NẾU @@FETCH_STATUS < 0 BREAK; 
 
    LỰA CHỌN  
        @objectname = QUOTENAME(o.name) 
        , @schemaname = QUOTENAME(s.name) 
    TỪ  
        sys.objects AS o 
        INNER THAM GIA sys.schemas khi BẬT s.schema_id = o.schema_id 
    Ở ĐÂU  
        o.object_id = @objectid; 
 
    LỰA CHỌN  
        @indexname = QUOTENAME(tên) 
        , @fillfactorset = TRƯỜNG HỢP fill_factor KHI 0 THÌ 0 KHÁC 1 KẾT THÚC 
    TỪ  
        sys.indexes 
    Ở ĐÂU 
        object_id = @objectid VÀ index_id = @indexid; 
 
    NẾU ((@density GIỮA 75,0 VÀ 85,0) VÀ @fillfactorset = 1) HOẶC (@fragmentation < 30,0) 
        SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' TỔ CHỨC LẠI'; 
    KHÁC NẾU @numrows >= 5000 VÀ @fillfactorset = 0 
        SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' XÂY DỰNG LẠI VỚI (FILLFACTOR = 90)'; 
    KHÁC 
        SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' XÂY DỰNG LẠI'; 
    PRINT convert(nvarchar, getdate(), 121) + N' Đang thực thi: ' + @command; 
    EXEC (@lệnh); 
    PRINT convert(nvarchar, getdate(), 121) + N' Xong.'; 
CHẤM DỨT 
 
-- Đóng và giải phóng con trỏ. 
ĐÓNG cur Indexes; 
DEALLOCATE cur Indexes; 
 
 
NẾU TỒN TẠI (CHỌN * TỪ @work_to_do) 
BẮT ĐẦU 
    IN 'Số trang ước tính trong các chỉ mục bị phân mảnh: ' + cast(@numpages dưới dạng nvarchar(20)) 
    CHỌN @numpages = @numpages - tổng (ps.used_page_count) 
    TỪ 
        @work_to_do AS fi 
        INNER THAM GIA sys.indexes AS i ON fi.objectid = i.object_id và fi.indexid = i.index_id 
        INNER THAM GIA sys.dm_db_partition_stats AS ps trên i.object_id = ps.object_id và i.index_id = ps.index_id 
 
    IN 'Số lượng trang được giải phóng ước tính: ' + cast(@numpages as nvarchar(20)) 
CHẤM DỨT 
ĐI 
 
 
--Cập nhật tất cả số liệu thống kê 
IN 'Đang cập nhật tất cả số liệu thống kê.' + chuyển đổi (nvarchar, getdate(), 121)  
EXEC sp_updatestats 
IN 'Hoàn tất cập nhật số liệu thống kê.' + chuyển đổi (nvarchar, getdate(), 121)  
ĐI 

--------------------------------------------- -----------------------------------

2) Chạy truy vấn bên dưới để nhận số lượng bản cập nhật đã thay thế.
 
CHỌN UpdateID TỪ vwMinimalUpdate WHERE IsSuperseded = 1 AND Declined = 0

--------------------------------------------- ------------------------------------

3) Chạy truy vấn bên dưới để xóa tất cả các bản cập nhật đã thay thế và chạy trình hướng dẫn dọn dẹp máy chủ.
 

KHAI BÁO mã định danh duy nhất @var1 
KHAI BÁO @msg nvarchar(100) 
KHAI BÁO DU Con trỏ
VÌ
CHỌN UpdateID TỪ vwMinimalUpdate WHERE IsSuperseded = 1 AND Declined = 0
mở DU
TÌM TIẾP THEO TỪ DU VÀO @var1
TRONG KHI (@@FETCH_STATUS > -1) 
BẮT ĐẦU 
 RAISERROR(@msg,0,1) VỚI NOWAIT exec spDeclineUpdate @updateID=@var1,@adminName=N'domain\user',@failIfReplica=1
TÌM TIẾP THEO TỪ DU VÀO @var1 
CHẤM DỨT 
ĐÓNG DU 
GIAO DỊCH DU 

--------------------------------------------- -------------------------------------

4) Chạy truy vấn SQL sau trên SQL đối với cơ sở dữ liệu SUSDB để nhận số lượng bản cập nhật cần dọn sạch:
 
exec spGetObsoleteUpdatesToCleanup 

--------------------------------------------- --------------------------------------

5) Chạy Truy vấn Dưới đây trên SQL DB để Xóa các bản cập nhật rồi chạy trình hướng dẫn dọn dẹp máy chủ:
 
KHAI BÁO @var1 INT 
KHAI BÁO @msg nvarchar(100) 
 
TẠO BẢNG #results (Col1 INT) 
CHÈN VÀO #results(Col1) EXEC spGetObsoleteUpdatesToCleanup 
 
KHAI BÁO WC Con Trỏ 
VÌ 
CHỌN Col1 TỪ #results 
 
MỞ WC 
FETCH TIẾP THEO WC 
VÀO @var1 
TRONG KHI (@@FETCH_STATUS > -1) 
BEGIN SET @msg = 'Đang xóa ' + CONVERT(varchar(10), @var1) 
RAISERROR(@msg,0,1) VỚI NOWAIT EXEC spDeleteUpdate @localUpdateID=@var1 
TÌM TIẾP THEO TỪ WC VÀO @var1 END 
ĐÓNG WC 
PHÂN PHỐI WC 
THẢ BẢNG #kết quả

--------------------------------------------- ----------------------------------------

6) Chạy truy vấn bên dưới, Để biết không. các bản cập nhật cho độ dài XML 5000 trở lên:

lựa chọn 
  u.UpdateID, 
  r.RevisionNumber, 
  r.RevisionID,
  lp.Tiêu đề, 
  pr.ExplicitlyDeployable dưới dạng ED, 
  pr.UpdateType, 
  pr.CreationDate 
 từ 
  tbCập nhật bạn 
  tham gia bên trong tbRevision r trên u.LocalUpdateID = r.LocalUpdateID 
  tham gia bên trong tbProperty pr trên pr.RevisionID = r.RevisionID 
  tham gia bên trong tbLocalizedPropertyForRevision lpr trên r.RevisionID = lpr.RevisionID 
  tham gia bên trong tbLocalizedProperty lp trên lpr.LocalizedPropertyID = lp.LocalizedPropertyID 
 ở đâu 
  lpr.LanguageID = 1033 
  và r.RevisionID trong (
lựa chọn
  t1.RevisionID
từ
  tbBundleAll t1
  tham gia bên trong tbBundleAtLeastOne t2 trên t1.BundledID=t2.BundledID
ở đâu
  t2.RevisionID trong (CHỌN dbo.tbXml.RevisionID TỪ dbo.tbXml
INNER THAM GIA dbo.tbProperty TRÊN dbo.tbXml.RevisionID = dbo.tbProperty.RevisionID
trong đó ISNULL(datalength(dbo.tbXml.RootElementXmlCompressed), 0) > 50000) và ishidden=0 và pr.ExplicitlyDeployable=1)

--------------------------------------------- ---------------------------------------------

7) Nếu có bản cập nhật, chúng tôi sẽ từ chối chúng bằng con trỏ sau:

KHAI BÁO @UpdateID nvarchar(100)
KHAI BÁO @msg nvarchar(100)
 
TẠO BẢNG #Updates (UpdateID nvarchar(100)) 
 
CHÈN VÀO #Updates(UpdateID) 
lựa chọn 
  u.UpdateID
  từ 
  tbCập nhật bạn 
  tham gia bên trong tbRevision r trên u.LocalUpdateID = r.LocalUpdateID 
  tham gia bên trong tbProperty pr trên pr.RevisionID = r.RevisionID 
  tham gia bên trong tbLocalizedPropertyForRevision lpr trên r.RevisionID = lpr.RevisionID 
  tham gia bên trong tbLocalizedProperty lp trên lpr.LocalizedPropertyID = lp.LocalizedPropertyID 
 ở đâu 
  lpr.LanguageID = 1033 
  và r.RevisionID trong (
lựa chọn
  t1.RevisionID
từ
  tbBundleAll t1
  tham gia bên trong tbBundleAtLeastOne t2 trên t1.BundledID=t2.BundledID
ở đâu
  t2.RevisionID trong (CHỌN dbo.tbXml.RevisionID TỪ dbo.tbXml
INNER THAM GIA dbo.tbProperty TRÊN dbo.tbXml.RevisionID = dbo.tbProperty.RevisionID
trong đó ISNULL(datalength(dbo.tbXml.RootElementXmlCompressed), 0) > 50000) và ishidden=0 và pr.ExplicitlyDeployable=1)
 
KHAI BÁO Con trỏ UC
VÌ
CHỌN UpdateID TỪ #Updates
 
MỞ UC
TẢI TIẾP THEO TỪ UC
VÀO @UpdateID
WHILE(@@FETCH_STATUS > -1)
BEGIN SET @msg = 'Từ chối' + @UpdateID
RAISERROR(@msg,0,1) VỚI NOWAIT EXEC spDeclineUpdate @updateID=@UpdateID,@adminName=N'mach14\administrator',@failIfReplica=1 
 
TẢI TIẾP THEO TỪ UC VÀO @UpdateID KẾT THÚC
ĐÓNG UC

GIAO DỊCH UC
THẢ BẢNG #Updates

--------------------------------------------- --------------------------------------------

8) Từ chối cập nhật trình điều khiển: -
 
SỬ DỤNG SUSDB
ĐI
CHỌN UpdateTypeID TỪ tbUpdateType WHERE Tên = 'Trình điều khiển'
ĐI
 
xóa khỏi tbrevisionlanguage trong đó Revisedid (chọn Revisedid từ tbRevision trong đó LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629')) 
xóa khỏi tbProperty trong đó Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbLocalizedPropertyForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbFileForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbInstalledUpdateSufficientForPrerequisite nơi điều kiện tiên quyết trong (chọn Prerequisiteid từ tbPreRequisite nơi bản sửa đổi trong (chọn bản sửa đổi từ tbRevision nơi LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate nơi UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629')))
xóa khỏi tbPreRequisite nơi mà bản sửa đổi trong (chọn bản sửa đổi từ tbRevision nơi có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbDeployment trong đó bản sửa đổi trong (chọn bản sửa đổi từ tbRevision trong đó LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbXml trong đó đã sửa đổi (chọn Revisedid từ tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbPreComputingLocalizedProperty trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbDriver trong đó đã sửa đổi (chọn Revisedid từ tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbFlattenedRevisionInCategory trong đó Revisedid trong (chọn Revisedid từ tbRevision trong đó LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbRevisionInCategory trong đó remixid trong (chọn Revisedid từ tbRevision trong đó LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbMoreInfoURLForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'))
xóa khỏi tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629')
xóa khỏi tbUpdateSummaryForAllComputers trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629')
 
 
xóa khỏi tbUpdate nơi UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'


9) Xóa các cập nhật ẩn:



CHỌN * TỪ tbUpdate WHERE isHidden = 1
MỘT 
xóa khỏi tbrevisionlanguage trong đó Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbProperty trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbLocalizedPropertyForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1 ))
xóa khỏi tbFileForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId trong có tbUpdate có ishidden=1 ))
xóa khỏi tbInstalledUpdateSufficientForPrerequisite nơi điều kiện tiên quyết trong (chọn Prerequisiteid từ tbPreRequisite nơi bản sửa đổi trong (chọn bản sửa đổi từ tbRevision nơi LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate nơi ishidden=1 )))
xóa khỏi tbPreRequisite nơi đã sửa đổi (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1 ))
xóa khỏi tbDeployment trong đó đã sửa đổi (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1 ))
xóa khỏi tbXml trong đó Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1 ))
xóa khỏi tbPreComputedLocalizedProperty trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId trong có tbUpdate có ishidden=1 ))
xóa khỏi tbDriver trong đó đã sửa đổi (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbFlattenedRevisionInCategory trong đó có Revisedid (chọn Revisedid từ tbRevision có LocalUpdateId trong (chọn LocalUpdateId trong tbUpdate có ishidden=1))
xóa khỏi tbRevisionInCategory trong đó có Revisedid (chọn Revisedid từ tbRevision có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate có ishidden=1))
xóa khỏi tbMoreInfoURLForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate có ishidden=1))
xóa khỏi tbBundleAtLeastOne trong đó bundledid trong (chọn bundledid từ tbBundleAll trong đó Revisedid trong (chọnRevisionid từ tbRevision trong đó LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1)))
xóa khỏi tbBundleAll trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbSecurityBulletinForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate có ishidden=1))
xóa khỏi tbKB ArticleForRevision trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbRevisionSupersedesUpdate trong đó Revisedid trong (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbBundleAtLeastOne trong đó có Revisedid (chọn Revisedid từ tbRevision trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbEulaProperty trong đó Revisedid trong (chọn Revisedid từ tbRevision trong đó có LocalUpdateId trong (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1))
xóa khỏi tbRevision nơi có LocalUpdateId (chọn LocalUpdateId từ tbUpdate nơi ishidden=1)
xóa khỏi tbUpdateSummaryForAllComputers trong đó có LocalUpdateId (chọn LocalUpdateId từ tbUpdate trong đó ishidden=1)
xóa khỏi tbInstalledUpdateSufficientForPrerequisite nơi có LocalUpdateId (chọn LocalUpdateId từ tbUpdate nơi ishidden=1)
xóa khỏi tbUpdate nơi ishidden = 1 

--------------------------------------------- --------------------------------------------- --------------------------

Sau đó mở bảng điều khiển WSUS và điều hướng đến Options\Server Cleanup Wizard.
Và chạy thuật sĩ từng cái một.
Michael Hampton avatar
lá cờ cz
Bạn có thể [đăng kiến ​​thức của mình](/trợ giúp/tự trả lời), nhưng nên ở dạng câu hỏi và câu trả lời, với câu hỏi ở trên và câu trả lời ở dưới.
BitWrangler avatar
lá cờ jp
lưu ý. Bài viết đầu tiên.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.