sách gpt4 ai đã đi

MSSQL giám sát các hoạt động DDL của cơ sở dữ liệu (tạo, sửa đổi, xóa các thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.)

In lại Tác giả:qq735679552 Thời gian cập nhật: 2022-09-29 22:32:09 30 4
mua khóa gpt4 Nike

CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.

Bài đăng trên blog CFSDN này MSSQL giám sát các hoạt động DDL của cơ sở dữ liệu (tạo, sửa đổi, xóa các thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.) được tác giả thu thập và sắp xếp. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.

Lời nói đầu: Đôi khi, một cơ sở dữ liệu có nhiều tài khoản, bao gồm quản trị viên cơ sở dữ liệu, nhà phát triển, nhân viên hỗ trợ vận hành và bảo trì, v.v. Nhiều tài khoản có thể có quyền tương đối lớn, chẳng hạn như quyền thao tác DDL (tạo, sửa đổi, xóa thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.). Với quá nhiều tài khoản, việc quản lý sẽ khá rắc rối và dễ gây nhầm lẫn. Nếu quản trị viên cơ sở dữ liệu không theo dõi các thay đổi trong lược đồ cơ sở dữ liệu, sẽ không biết ai đã thực hiện những thay đổi nào đối với lược đồ cơ sở dữ liệu (các thay đổi ở đây chỉ là các thao tác DDL). Đặc biệt, đôi khi một số nhà phát triển có thể không tuân theo các quy tắc và quy định, bỏ qua hoặc quên thông báo cho nhà xuất bản hoặc DBA và đi thẳng đến máy sản xuất để thực hiện một số thao tác DDL. Khi đó, chúng ta cần theo dõi một số thay đổi nhất định đối với lược đồ cơ sở dữ liệu. Nếu chúng ta có thể theo dõi và để lại bằng chứng, điều này không chỉ cho phép DBA hoặc các nhà quản lý có liên quan biết những thay đổi này và quản lý cơ sở dữ liệu hiệu quả mà còn tránh được các vấn đề và tranh cãi, và cuối cùng DBA trở thành vật tế thần. Sau đây là giải pháp cho vấn đề trên. Chúng ta giải quyết vấn đề bằng cách tạo bảng DatabaseLog và trình kích hoạt DDL. Đầu tiên, tạo bảng DatabaseLog mới trong cơ sở dữ liệu msdb để lưu thông tin thu được từ trình kích hoạt DDL. Trình kích hoạt DDL chủ yếu trả về thông tin về các sự kiện máy chủ hoặc cơ sở dữ liệu thông qua hàm EVENTDATA(). .

  .

Sao chép mã như sau

SỬ DỤNG msdb; GO TẠO BẢNG [dbo].[DatabaseLog] ( [DatabaseLogID] [int] IDENTITY(1,1) KHÔNG NULL, [PostTime] [datetime] KHÔNG NULL, [DatabaseUser] [sysname] SO SÁNH SQL_Latin1_General_CP1_CI_AS KHÔNG NULL, [LoginName] [sysname] SO SÁNH SQL_Latin1_General_CP1_CI_AS NULL, [ClientHost] [sysname] SO SÁNH SQL_Latin1_General_CP1_CI_AS NULL, [Event] [sysname] SO SÁNH SQL_Latin1_General_CP1_CI_AS KHÔNG NULL, [Schema] [sysname] SO SÁNH SQL_Latin1_General_CP1_CI_AS NULL, [Object] [sysname] SO SÁNH SQL_Latin1_General_CP1_CI_AS NULL, [TSQL] [nvarchar](max) SO SÁNH SQL_Latin1_General_CP1_CI_AS KHÔNG NULL, [XmlEvent] [xml] KHÔNG NULL, RÀNG BUỘC [PK_DatabaseLog_DatabaseLogID] KHÓA CHÍNH KHÔNG ĐƯỢC PHÂN LỚP ( [DatabaseLogID] ASC )VỚI (PAD_INDEX= TẮT, IGNORE_DUP_KEY = TẮT) BẬT [CHÍNH] ) BẬT [CHÍNH] ĐI THỰC THI sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Khóa chính cho các bản ghi DatabaseLog.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'COLUMN',@level2name=N'DatabaseLogID' ĐI THỰC THI sys.sp_addextendedproperty@name=N'MS_Description', ', @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'COLUMN',@level2name=N'PostTime' GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Người dùng đã triển khai thay đổi DDL.', @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'COLUMN',@level2name=N'DatabaseUser' GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Tên đăng nhập đã triển khai thay đổi DDL.', GO EXEC SYS.SP_ADDEXTPROPERTY@NAME=N'MS_DESCRIP ', @value = n'the máy khách mà thay đổi DDL đã được triển khai.' Inname 'Go EXEC SYS.SP_ADDEXTPROPERTY@NAME=N'MS_DESCRIP', @value = n'the máy khách mà thay đổi DDL đã được triển khai. ' = N'ClientHost 'Go EXEC SYS.SP_ADDEXTPROPERTY GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Sơ đồ mà đối tượng đã thay đổi thuộc về.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'COLUMN',@level2name=N'Event'GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Đối tượng đã được thay đổi bởi câu lệnh DDL.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'COLUMN',@level2name=N'Object' GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Câu lệnh Transact-SQL chính xác đã được thực thi.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'COLUMN',@level2name=N'Object' ' ASE Trigger. ' asetriggerlog. ' sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Ràng buộc khóa chính (không cụm)', @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'CONSTRAINT',@level2name=N'PK_DatabaseLog_DatabaseLogID' GO .Dữ liệu được thu thập bởi trình kích hoạt cơ sở dữ liệu ddlDatabaseTriggerLog.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog' GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Primary key (nonclustered) constraints' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'CONSTRAINT',@level2name=N'PK_DatabaseLog_DatabaseLogID' GO .Dữ liệu được thu thập bởi trình kích hoạt cơ sở dữ liệu ddlDatabaseTriggerLog.' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog' GO EXEC sys.sp_addextendedproperty@name=N'MS_Description', @value=N'Primary key (nonclustered) constraints' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DatabaseLog', @level2type=N'CONSTRAINT',@level2name=N'PK_DatabaseLog_DatabaseLogID' GO .

  .

Ví dụ, nếu tôi muốn giám sát hoạt động DDL của cơ sở dữ liệu MyAssistant, thì trước tiên chúng ta tạo một tệp cấu hình (tên hồ sơ) có tên là "DataBase_DDL_Event" trong "Database Mail". Tôi sẽ không nói nhiều về điều này. Nếu bạn không biết cách cấu hình, hãy tự thực hành. Nếu tôi cần cơ sở dữ liệu gửi các thay đổi hoạt động DDL được giám sát đến địa chỉ email của tôi là *****@***.com (thay thế bằng địa chỉ email của riêng bạn), thì tôi chỉ cần sửa đổi địa chỉ email và profile_name trong mã sau.

  .

Sao chép mã như sau

SỬ DỤNG MyAssistant; ĐI TẠO TRIGGER [DTG_DatabaseDdlTriggerLog] TRÊN CƠ SỞ DỮ LIỆU CHO DDL_DATABASE_LEVEL_EVENTS NHƯ BẮT ĐẦU ĐẶT NOCOUNT TRÊN; KHAI BÁO @data XML; KHAI BÁO @schema sysname; KHAI BÁO @object sysname; KHAI BÁO @eventType sysname; KHAI BÁO @tableHTML NVARCHAR(MAX) ; ĐẶT @data = EVENTDATA(); ĐẶT @eventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname'); ĐẶT @schema = @data.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname'); ĐẶT @object = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname') NẾU @object KHÔNG PHẢI NULL IN ' ' + _CHỈ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) ĐỐI VỚI XML PATH('tr'), LOẠI ) AS NVARCHAR(MAX) ) + N'' ; EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DataBase_DDL_Event', @recipients='***@***.com', @subject = 'Sự kiện DDL - DataBase MyAssistant', @body = @tableHTML, @body_format = 'HTML' ; KẾT THÚC; ĐI .

  .

Tiếp theo, chúng ta hãy kiểm tra nó. Nếu người dùng Test đăng nhập vào cơ sở dữ liệu và vô tình xóa một bảng Test, như thể hiện trong Hình 1 bên dưới, tôi sẽ nhận được một email nhắc nhở tôi về thao tác DDL mà người dùng Test đã thực hiện trên máy chủ khách hàng đó (như thể hiện trong Hình 2 bên dưới). Tất nhiên, nếu bạn quan tâm đến phong cách và bố cục của email, bạn có thể làm đẹp nó.

  .

MSSQL giám sát các hoạt động DDL của cơ sở dữ liệu (tạo, sửa đổi, xóa các thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.)

MSSQL giám sát các hoạt động DDL của cơ sở dữ liệu (tạo, sửa đổi, xóa các thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.)

Cuối cùng, bài viết này về các hoạt động DDL của cơ sở dữ liệu giám sát MSSQL (tạo, sửa đổi, xóa các thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.) ở đây. Nếu bạn muốn biết thêm về các hoạt động DDL của cơ sở dữ liệu giám sát MSSQL (tạo, sửa đổi, xóa các thủ tục được lưu trữ, tạo, sửa đổi, xóa bảng, v.v.), vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

30 4 0
qq735679552
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com