[MSSQL] – Thiết lập Database Mail

Chào các bạn,

Hôm nay mình giới thiệu cách thiết lập và gửi mail từ Microsoft SQL Server từ phiên bản 2008 trở lên.

Từ MSSQL server 2008 trở lên Microsoft cung cấp chức năng cho chúng ta có thể cấu hình mail server trực tiếp trên Database Engine, chức năng này rất tiện dụng cho các quản trị viên CSDL và lập trình viên.

Ví dụ, quản trị viên có thể thiết lập các jobs tự động gửi Email về tình trạng hệ thống một cách tự động.

Continue reading

[MSSQL-SMO]-Bộ thư viện lập trình Database SMO (SQL Server Management Objects)

Chào các bạn,

Cách đây khoản chừng chục năm, chưa có môi trường .NET thì chắc hẳn ai đã từng làm việc trên môi trường lập trình Windows 32 thì cũng ít nhiều biết đến bộ thư viện COM/DCOM : DMO của Microsoft cung cấp. Bộ thư viện này cung cấp các hàm, thủ tục và các đối tượng giúp lập trình viên truy cập vào Database Engine dễ dàng hơn. Tuy nhiên việc sử dụng COM/DCOM vất vả và không ổn định.

Các bạn tham khảo tài liệu SMO : https://msdn.microsoft.com/en-us/library/hh248032.aspx

Sau khi có bộ Microsoft Framework, Microsoft đã phát triển lại bộ DMO thành SMO để lập trình viên có thể dễ dàng tích hợp vào các .NET Project hơn.

2015-05-18_233149

1.Vậy bộ thư viện SMO (SQL Server Management Objects) là gì, giúp ích gì cho lập trình viên hệ thống và DBA ?

Continue reading

[MSSQL]-TSQL-Tạo store procedure insert động bằng câu lệnh SQL

Chào các bạn,

Đối với các bạn phát triển phần mềm, mỗi khi tạo một table mới và dùng store procedure chúng ta thường phải code store procedure insert, update, delete bằng tay. Đoạn script bên dưới khi chạy sẽ tự động tạo script store insert, các bạn có thể copy câu script sinh ra và create store

Mình xin giới thiệu đoạn code tự động sinh ra câu lệnh TSQL để chúng ta đỡ tốn thời gian code. Câu lệnh còn đơn giản chưa lường trước được một số trường hợp, các bạn đóng góp thêm.

2015-04-24_170817

Continue reading

[MSSQL]-Database Instance là gì?

Chào các bạn,

Hôm nay mình xin giới thiệu các bạn một khái niệm : Database Instance.

Để cho dễ hiểu bạn hình dung như sau :

– Máy tính PC hoặc máy chủ của bạn như một tòa nhà chung cư, mỗi căn hộ như một Database Instance. Các Database Instance hoạt động độc lập với nhau và cùng cấu trúc với nhau.
-Tên Instance là duy nhất trên mỗi máy chủ
– Khi truy cập vào máy chủ: Tên Máy chủ Hoặc IP/ Instance Name
– MSSQLSERVER là tên instance mặc định của SQL Server

Máy chủ.PC

[MSSQL]-Install Microsoft SQL Server 2012

Chào các bạn,

Hôm nay mình mở topic hướng dẫn các bạn mới làm quen với Microsoft SQL Server cài đặt trên Windows Server 2012 R2. Các bạn cũng có thể cài trên các Windows khác với các bước cài đặt tương tự.

Đây là mô hình chung của việc cài đặt. Các bạn có thể tham khảo “Hardware and Software Requirements for Installing SQL Server 2012” Những bước chuẩn bị cài đặt bạn chuẩn bị kỹ chừng nào tốt chừng nấy, đỡ tốn thời khai khi gặp lỗi.

Install Microsoft SQL 2012

 

Continue reading

[MSSQL][SQL server profiler] – Công cụ theo dõi câu lệnh TSQL truy cập vào Database Engine

Chào các bạn,

Hôm nay mình sẽ giới thiệu công cụ “SQL Server profiler” công cụ này rất hữu ích cho DBA theo dõi các câu lệnh TSQL(SQL, DDL, DML) truy cập từ ứng dụng vào Database Engine. Dựa vào đó DBA có thể phân tích, đánh giá và cải thiện tốc độ xử lý Database.

2015-04-17_093747

Continue reading

[MSSQL][Database Log] – Đọc log server và chuẩn đoán lỗi

Chào các bạn,

Khi làm DBA buộc các bạn phải xem Database Log thường xuyên. Việc kiểm tra Database log thường xuyên giúp bạn chuẩn đóa, ngăn ngừa và khắc phục lỗi Database trong hiện tại và tương lai.

Vì vậy đọc và chuẩn đoán database log để tìm ra nguyên nhân lỗi cũng là một nghệ thuật. Tùy thuộc vào kiến thức, khả năng phân tích, kinh nghiệm và sự nghiên cứu cá nhân của mỗi quản trị viên.

2015-04-16_223809

Continue reading

[MSSQL] – Tổng quan về User và bảo mật User

Chào các bạn,

Việc bảo mật truy xuất dữ liệu trong hệ quản trị cơ sở dữ liệu là công việc hàng ngày phải theo dõi để đảm bảo rằng việc truy xuất dữ liệu từ các chương trình ứng dụng thông suốt, không thừa, không thiếu.

Hơn thế nữa, khi triển khai hệ thống mới DBA cũng cần khảo sát và thiết lập bảo mật cho Database Account truy cập.

Nếu thiết lập không đúng, thiếu quyền thì không nói, dư quyền là một rủi ro rất lớn đến dữ liệu. Trong trường hợp mật khẩu Database bị lộ, bị hack thì hacker có thể phần quyền leo thang và chiếm toàn bộ dữ liệu của bạn một cách dễ dàng.

2015-04-16_094128

Khái niệm:

– Database Engine: Khi nói đến Database Engine nghĩa là nói đến hệ quản trị cơ sở dữ liệu được cài đặt trên máy chủ của bạn, có thể máy chủ của bạn cài đặt nhiều Instance, mỗi Instance được xem như là một Database Engine.

– Database: Khi nói đến Database nghĩa là nói đến một Database xác định đã được tạo trong Database Engine của bạn.

Continue reading

Lỗi “Access Denied” khi attach hoặc restore Database

Chào các bạn,

Khi có nhu cầu attach một Database có sẵn hoặc restore một file backup vào DBMS nhất là file đã được di chuyển từ máy này sang máy khác, SQL thường báo lỗi như sau :

2015-04-13_092133

Thực ra vấn đề này cũng thường xảy ra va rất đơn giản để xử lý. Cường xin giới thiệu hướng dẫn này để các bạn mới làm quen với SQL xử lý cho nhanh.

Lưu ý: Bài viết này mình thực hiện trên Windows 7, trên Windows Server hoặc các phiên bản khác của Windows các bạn cũng thực hiện tương tự
Continue reading

“allow updates” thảm họa cho DBA (SQL2000) Microsoft đã fix version >= SQL2005

Chào các bạn,

“allow updates” là một option thảm họa trong Microsoft SQL 2005 trở về trước. Tại sao mình nói như thế ?

Cách đây khoản 4 năm, khi còn sử dụng SQL2000 và 2005 mình có biết một anh bạn đồng nghiệp, anh ta thiết kế Table có một column chiều dài bằng nvarchar(100). Sau này vì nhu cầu sử dụng nên column này phải dài bằng 200. Rất nhiều table và column cần phải sửa lại length của field này. Thay vì dùng Script Alter table, anh ta lại update length trực tiếp vào sys.columns vì option “allow updates” được bật lên nên user có thể cập nhật thẳng vào các table hệ thống, trong khi đó việc constraint giữa các table trong hệ thống không có. 

Continue reading

Tìm transaction chưa hoàn thành trong nhiều Database

Chào các bạn,

đôi khi server bạn treo cứng không rõ nguyên nhân, có rất nhiều nguyên nhân. Một trong những nguyên nhân đó là ứng dụng xử lý mở nhiều transaction nhưng không rollback hoặc commit transaction.

Trên server của bạn có rất nhiều database, vậy làm sao chúng ta biết database nào đang chứa transaction bị treo lơ lửng ?
Câu lệnh TSQL bên dưới sẽ giúp chúng ta quét toàn bộ các database và kiểm tra transaction log:
Continue reading