Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

LỖI #: 115124 (bảo trì nội dung)
VSTS lỗi số: 316475
VSTS lỗi số: 365460

Microsoft phân phối Microsoft SQL Server 2008 sửa chữa như là một tải về tệp. Bởi vì các bản sửa lỗi tích lũy, mỗi bản phát hành mới chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2008 sửa chữa phát hành.

Triệu chứng

Trong Microsoft SQL Server 2005 hoặc SQL Server 2008, bạn chạy một quy trình được lưu trữ trên máy chủ từ xa bằng cách sử dụng máy chủ được liên kết. Sau khi bạn chạy các quy trình được lưu trữ nhiều lần, bạn có thể thấy rằng việc sử dụng bộ nhớ của dịch vụ SQL Server tăng nhanh chóng. Ngoài ra, các lỗi thông báo liên quan đến thiếu bộ nhớ trong không gian địa chỉ MemTolLeave có thể được ghi vào tệp errorlog SQL Server 2008.

Lưu ý Bạn cũng có thể gặp phải vấn đề này khi bạn sử dụng bản sao, gửi bản ghi hoặc nhân bản. Các tính năng có thể sử dụng quy trình được lưu trữ sử dụng máy chủ được liên kết.

Nguyên nhân

Vấn đề này là do một rò rỉ bộ nhớ xảy ra khi bạn chạy một truy vấn sử dụng máy chủ được liên kết. Rò rỉ xảy ra khi bạn có thể gọi thủ tục được lưu trữ từ xa. Có hai loại tiềm năng rò rỉ:

  • Giá trị trả lại các cuộc gọi thủ tục được lưu trữ, luôn bị rò rỉ. Đây là một rò rỉ nhỏ nhưng thường xuyên.

  • Cuộc gọi thủ tục được lưu trữ từ xa có trong các tham số kiểu dữ liệu sqlvariant .

Giải pháp

SQL Server 2008 gói dịch vụ 1


Sửa chữa cho vấn đề này lần đầu tiên phát hành tích lũy Update 3 cho SQL Server 2008 gói dịch vụ 1. Để biết thêm thông tin về gói Cập Nhật tích luỹ này, 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:

971491 tích lũy gói 3 cho SQL Server 2008 gói dịch vụ 1Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2008 sửa chữa phát hành. Microsoft khuyên bạn xem xét việc áp dụng bản vá mới nhất có chứa hotfix này. Để 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:

970365 SQL Server 2008 phiên bản được phát hành sau khi SQL Server 2008 gói dịch vụ 1
Microsoft SQL Server 2008 hotfix được tạo cho gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng một hotfix SQL Server 2008 gói dịch vụ 1 cho cài đặt SQL Server 2008 gói dịch vụ 1. Theo mặc định, bất kỳ hotfix nào được cung cấp trong gói dịch vụ máy chủ SQL được bao gồm trong gói dịch vụ tiếp theo của SQL Server.

SQL Server 2005 gói dịch vụ 3


Sửa chữa cho vấn đề này lần đầu tiên phát hành tích lũy Update 6 cho SQL Server 2005 Service Pack 3. Để biết thêm thông tin về gói Cập Nhật tích luỹ này, 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:

974648 tích lũy gói 6 cho SQL Server 2005 Service Pack 3Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2005 vá. Microsoft khuyên bạn xem xét việc áp dụng bản vá mới nhất có chứa hotfix này. Để 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:

960598 the SQL Server 2005 xây dựng đã được phát hành sau khi SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 hotfix được tạo cho gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng một hotfix SQL Server 2005 Service Pack 3 cho việc cài đặt SQL Server 2005 Service Pack 3. Theo mặc định, bất kỳ hotfix nào được cung cấp trong gói dịch vụ máy chủ SQL được bao gồm trong gói dịch vụ tiếp theo của SQL Server.

Phiên bản phát hành SQL Server 2008

Quan trọng Bạn phải cài đặt bản vá này nếu bạn đang chạy phiên bản phát hành SQL Server 2008.

Sửa chữa cho vấn đề này lần đầu tiên được phát hành 8 bản Cập Nhật tích luỹ. Để biết thêm thông tin về cách lấy gói Cập Nhật tích luỹ này dành cho SQL Server 2008, 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:

975976 tích lũy gói 8 cho SQL Server 2008Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả bản vá bảo mật được đính kèm với trước SQL Server 2008 sửa chữa phát hành. Chúng tôi khuyên bạn xem xét việc áp dụng bản vá mới nhất có chứa hotfix này. Để 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:

956909 SQL Server 2008 phiên bản được phát hành sau khi SQL Server 2008

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Thông tin

Thông tin ngăn xếp cuộc gọi

Rò rỉ bộ nhớ này có thể thấy heap mặc định. Rò rỉ một mẫu sẽ 40 byte. Đây là kích thước cấu trúc CXVariant trả lại giá trị. LFH heap có thể không hiển thị các byte 40 rò rỉ phù hợp và có thể hiển thị rò rỉ 4 KB đến 64 KB khoảng nếu bạn sử dụng các ! heap < heaphandle > - a -k lệnh trên một tệp kết xuất đầy đủ.

Lưu ý Theo mặc định, Windows Server 2008, Windows Vista, Windows 7 và Windows Server 2008 R2 sẽ sử dụng LFH đống cho heap mặc định trong quá trình SQL Server.

UMDH hoặc DebugDiag Hiển thị ngăn xếp rò rỉ có sự sau. UMDH, DebugDiag, và ! heap-l lệnh tất cả Hiển thị dưới dạng một ngăn xếp chung cho rò rỉ cho vấn đề trở lại trạng thái:

Lưu ý Tuỳ thuộc vào nhà cung cấp nào đang được sử dụng, cung cấp thông tin có thể không sqlncli10.


ntdll!RtlAllocateHeap+0001B970sqlncli10!CDataSource::DataConvert+0000C898
sqlncli10!CDataSource::OLEDBdataFromSQLdata+0000018C
sqlncli10!CStmt::ProcessReturnStatus+000001FA
sqlncli10!BATCHCTX::Run+000005BA
sqlncli10!CDBConnection::ProcessTDSStream+000001A7
sqlncli10!CStmt::SQLExecRPC+00000602
sqlncli10!CCommand::ExecuteHelper+00000250
sqlncli10!CCommand::Execute+000013BB
sqlncli10!CImpICommandText::Execute+00000209
sqlservr!MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64>::operator()+00000053
sqlservr!ReturnValueHolder<long>::ExecAndSaveReturnValue<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+00000018
sqlservr!CallProtectorImpl::CallWithSEH<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000002A
sqlservr!CallProtectorImpl::CallExternalFull<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000004D
sqlservr!SOS_CallExternalFunctor<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+0000001D
sqlservr!IWrapInterface<ICommandText>::HrCallExternal<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+00000092
sqlservr!CWrapICommandText::Execute+00000230
sqlservr!CRpcInterfaces::Relay+00000982
sqlservr!CStmtExecProc::XretRemoteExec+00000732
sqlservr!CRemoteProcExecLevel::Execute+00000160
sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5
sqlservr!CStmtExecProc::XretExecExecute+0000078E
sqlservr!CXStmtExecProc::XretExecute+0000004E
sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA
sqlservr!CMsqlExecContext::FExecute+00001023
sqlservr!CSQLSource::Execute+00001091
sqlservr!process_request+000006BC
sqlservr!process_commands+000003C4
sqlservr!SOS_Task::Param::Execute+0000016B
sqlservr!SOS_Scheduler::RunTask+000001A5
sqlservr!SOS_Scheduler::ProcessTasks+000002E7

Here are the call stacks for the SQL Variant output parameter leak for sql_variant:

ntdll!RtlAllocateHeap+0001B970
sqlncli10!CDataSource::DataConvert+0000BAD2
sqlncli10!CDataSource::OLEDBdataFromSQLdata+00000D18
sqlncli10!CStmt::ProcessReturnValue+00000BC5
sqlncli10!CTdsSqloledb::OnReturnValue+00000018
sqlncli10!BATCHCTX::ProcessReturnValue+00000366
sqlncli10!BATCHCTX::Run+000004AD
sqlncli10!CDBConnection::ProcessTDSStream+000001A7
sqlncli10!CStmt::SQLExecRPC+00000602
sqlncli10!CCommand::ExecuteHelper+00000250
sqlncli10!CCommand::Execute+000013BB
sqlncli10!CImpICommandText::Execute+00000209
sqlservr!MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64>::operator()+00000053
sqlservr!ReturnValueHolder<long>::ExecAndSaveReturnValue<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+00000018
sqlservr!CallProtectorImpl::CallWithSEH<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000002A
sqlservr!CallProtectorImpl::CallExternalFull<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000004D
sqlservr!SOS_CallExternalFunctor<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+0000001D
sqlservr!IWrapInterface<ICommandText>::HrCallExternal<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+00000092
sqlservr!CWrapICommandText::Execute+00000230
sqlservr!CRpcInterfaces::Relay+00000982
sqlservr!CStmtExecProc::XretRemoteExec+00000732
sqlservr!CRemoteProcExecLevel::Execute+00000160
sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5
sqlservr!CStmtExecProc::XretExecExecute+0000078E
sqlservr!CXStmtExecProc::XretExecute+0000004E
sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA
sqlservr!CMsqlExecContext::FExecute+00001023
sqlservr!CSQLSource::Execute+00001091
sqlservr!process_request+000006BC
sqlservr!process_commands+000003C4
sqlservr!SOS_Task::Param::Execute+0000016B

ntdll!RtlAllocateHeap+0001B970
sqlncli10!SSVariantCopy+00000149
sqlncli10!CDataSource::DataConvert+0000BB50
sqlncli10!CDataSource::OLEDBdataFromSQLdata+00000D18
sqlncli10!CStmt::ProcessReturnValue+00000BC5
sqlncli10!CTdsSqloledb::OnReturnValue+00000018
sqlncli10!BATCHCTX::ProcessReturnValue+00000366
sqlncli10!BATCHCTX::Run+000004AD
sqlncli10!CDBConnection::ProcessTDSStream+000001A7
sqlncli10!CStmt::SQLExecRPC+00000602
sqlncli10!CCommand::ExecuteHelper+00000250
sqlncli10!CCommand::Execute+000013BB
sqlncli10!CImpICommandText::Execute+00000209
sqlservr!MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64>::operator()+00000053
sqlservr!ReturnValueHolder<long>::ExecAndSaveReturnValue<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+00000018
sqlservr!CallProtectorImpl::CallWithSEH<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000002A
sqlservr!CallProtectorImpl::CallExternalFull<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000004D
sqlservr!SOS_CallExternalFunctor<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+0000001D
sqlservr!IWrapInterface<ICommandText>::HrCallExternal<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+00000092
sqlservr!CWrapICommandText::Execute+00000230
sqlservr!CRpcInterfaces::Relay+00000982
sqlservr!CStmtExecProc::XretRemoteExec+00000732
sqlservr!CRemoteProcExecLevel::Execute+00000160
sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5
sqlservr!CStmtExecProc::XretExecExecute+0000078E
sqlservr!CXStmtExecProc::XretExecute+0000004E
sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA
sqlservr!CMsqlExecContext::FExecute+00001023
sqlservr!CSQLSource::Execute+00001091
sqlservr!process_request+000006BC
sqlservr!process_commands+000003C4

Tham khảo

Để biết thêm thông tin về mô hình dịch vụ gia tăng dành cho SQL Server, 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:

935897 một mô hình dịch vụ gia tăng có sẵn từ nhóm SQL Server để cung cấp các bản sửa lỗi được báo cáo sự cố


Để biết thêm thông tin về giản đồ đặt tên cho bản Cập Nhật SQL Server, 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:

822499 Giản đồ đặt tên mới cho gói cập nhật phần mềm Microsoft SQL Server

Để biết thêm thông tin về thuật ngữ cập nhật phần mềm, 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:

824684 mô tả thuật ngữ chuẩn được sử dụng để miêu tả các bản cập nhật phần mềm Microsoft

Thông tin

SQL Server 2008 R2 BPA thông tin

Các SQL Server 2008 R2 Best Practice Analyzer dành (SQL Server 2008 R2 BPA) đưa ra quy tắc để phát hiện các tình huống trong đó phiên bản SQL Server có liên kết với máy chủ được cấu hình để sử dụng và khắc phục sự cố này không được áp dụng. SQL Server 2008 R2 BPA hỗ trợ SQL Server 2008 và SQL Server 2008 R2.

Nếu bạn chạy công cụ BPA và gặp cảnh báo, "Cơ sở dữ liệu - sửa chữa rò rỉ bộ nhớ máy chủ được liên kết thiếu," bạn cần kiểm tra các hiện tượng được đề cập trong bài viết này và áp dụng bản Cập Nhật tích lũy phù hợp.

Tham khảo

Phần mềm quy tắc

Tiêu đề quy tắc

Quy tắc định danh

Quy tắc SQL Server 2008 R2 BPA

máy chủ được liên kết nhớ rò rỉ sửa chữa thiếu

RID3807






Tác giả (SME): bruceye
Người viết: ericzha
Biên tập kỹ thuật: tejasaks
Biên tập viên: v-lynan

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×