Câu lệnh EXECUTE AS trong SQL Server 2005 Trong SQL Server 2005, bạn hoàn toàn có thể xác định được rõ ràng ngữ cảnh thực thi của một người dùng cụ thể. Như đã biết, một session (phiên làm việc) bắt đầu khi người dùng đăng nhập vào SQLServer hoặc kết nối tới SQLServer Tất cả hoạt động trong sesstion đó dùng các ủy nhiệm đăng nhập được sử dụng để kết nối tới SQL Server. Khi câu lệnh EXECUTE AS chạy, ngữ cảnh thực thi của session sẽ chuyển tới login hay tên người dùng. Đây là một tiện ích rất có lợi cho những người quản trị cơ sở dữ liệu SQL Server 2005 khi họ cần kiểm tra sự cho phép của từng người dùng cụ thể. Nó còn rất hữu ích khi người dùng muốn thực thi một hàm được lưu trữ trong ngữ cảnh của người dùng khác. Bài này sẽ giải thích tính hữu ích của câu lệnh EXECUTE AS đối với người quản trị cơ sở dữ liệu. Giả dụ quản trị cơ sở dữ liệu Mr.Smith muốn tạo một tài khoản đăng nhập SQL Server cho Shiraishi và cấp phát truy cập tới các cửa sổ đăng nhập “SQL2005/Shiraishi” một cách dễ dàng. Thêm vào đó, anh ấy trao quyền chỉ đọc tới bảng products trong giản đồ CompanyProducts. Tuy nhiên, người quản lý không muốn Ms.Shiraishi có thể truy cập vào bảng productprice trong cùng giản đồ đó. Với tình huống đó chúng ta phải có cơ sở dữ liệu dưới, CompanyProducts: USE [master] GO /****** Object: Database [CompanyProducts] Script Date: 03/26/2006 19:32:40 ******/ IF EXISTS (SELECT name FROM sys.databases WHERE name = N'CompanyProducts') DROP DATABASE [CompanyProducts] go create database CompanyProducts go USE [CompanyProducts] GO /****** Object: Schema [CompanyCustomers] Script Date: 03/26/2006 19:33:45 ******/ IF EXISTS (SELECT * FROM sys.schemas WHERE name = N'CompanyCustomers') DROP SCHEMA [CompanyCustomers] go create Schema CompanyProducts go USE [CompanyProducts] GO /****** Object: Table [CompanyProducts].[Products] Script Date: 03/26/2006 19:34:32 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[CompanyProducts].[Products]') AND type in (N'U')) DROP TABLE [CompanyProducts].[Products] go Create table CompanyProducts.Products (id int, Name varchar(100)) go insert into CompanyProducts.Products select 1,'Refrigerator' go insert into CompanyProducts.Products select 2,'Washing Machine' go insert into CompanyProducts.Products select 3,'Dryer' go insert into CompanyProducts.Products select 4,'Lawn Mower' go USE [CompanyProducts] GO /****** Object: Table [CompanyProducts].[ProductPrice] Script Date: 03/26/2006 19:34:12 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[CompanyProducts].[ProductPrice]') AND type in (N'U')) DROP TABLE [CompanyProducts].[ProductPrice] go . đăng nhập vào SQLServer hoặc kết nối tới SQLServer Tất cả hoạt động trong sesstion đó dùng các ủy nhiệm đăng nhập được sử dụng để kết nối tới SQL Server. Khi câu lệnh EXECUTE AS chạy, ngữ. Câu lệnh EXECUTE AS trong SQL Server 2005 Trong SQL Server 2005, bạn hoàn toàn có thể xác định được rõ ràng ngữ cảnh thực. giải thích tính hữu ích của câu lệnh EXECUTE AS đối với người quản trị cơ sở dữ liệu. Giả dụ quản trị cơ sở dữ liệu Mr.Smith muốn tạo một tài khoản đăng nhập SQL Server cho Shiraishi và cấp