Cách tạo nhóm tệp trong SQL Server
FYI Tôi sử dụng tập lệnh này để thêm một nhóm tệp người dùng và đặt nó làm mặc định (sau khi tạo db) để giữ sạch chính cho thông tin danh mục Show
/* * alzdba đ 20070509 * thêm nhóm tệp FGUserData bằng một tệp và biến nó thành nhóm tệp DEFAULT * để tách các đối tượng người dùng khỏi các đối tượng hệ thống (danh mục) để hỗ trợ khôi phục nhóm tệp * để chúng tôi có thể đưa ra danh mục càng sớm càng tốt * và sau đó thêm các khôi phục nhóm tệp cần thiết * * sp_helpdb * */ KHAI BÁO bit @ExcludedDb /* * kiểm tra cơ sở dữ liệu bị loại trừ */ NẾU TỒN TẠI (CHỌN * TỪ chủ. hệ thống. cơ sở dữ liệu WHERE NAME not in ('master', 'msdb', 'tempdb', 'model' -- Cơ sở dữ liệu hệ thống SQLServer (Không thể thêm tệp vào cơ sở dữ liệu chính và cơ sở dữ liệu mô hình) ,'Spotlight' ,'DDBADummy' ,'DJOBI' -- Cơ sở dữ liệu công việc ALZDBA ,'AdventureWorks', 'AdventureWorksDW', 'Northwind', 'Pubs' -- Cơ sở dữ liệu mẫu SQLServer ,'DDBAServerPing' -- Cơ sở dữ liệu ping ALZDBA ) VÀ tên = db_name() ) -- Rij gévonden. đồng ý ĐẶT @ExcludedDb = 0 KHÁC ĐẶT @ExcludedDb = 1 /* * kiểm tra xem db có một nhóm tệp không CHÍNH */ NẾU CÓ (Chọn * TỪ hệ thống. nhóm tập tin Ở ĐÂU TÊN 'CHÍNH' ) HOẶC @ExcludedDb = 1 BẮT ĐẦU NẾU @ExcludedDb = 1 BẮT ĐẦU IN '*' IN '*' PRINT '- Cơ sở dữ liệu [' + db_name() + '] là cơ sở dữ liệu bị loại trừ cho thao tác này. ' IN '*' IN '*' CHẤM DỨT KHÁC BẮT ĐẦU IN '*' IN '*' IN '- Cơ sở dữ liệu đã chứa một nhóm tệp không CHÍNH' IN '*' IN '*' CHẤM DỨT CHẤM DỨT KHÁC BẮT ĐẦU KHAI BÁO @rc INT KHAI BÁO @cmd NVARCHAR(MAX) KHAI BÁO @InitialSizeKB VARCHAR(15) KHAI BÁO @IncrementKB VARCHAR(15) KHAI BÁO @Filename NVARCHAR(260) BỘ @rc = -1 CHỌN HÀNG ĐẦU 1 @Tên tệp = THAY THẾ (tên tệp, '. mdf' , '_FGUserData. NDF') , @InitialSizeKB = CAST(([Kích thước] * 8 ) NHƯ VARCHAR(15)) , @IncrementKB = CAST(CEILING ([tăng trưởng] * 8 ) AS VARCHAR(15)) -- thông thường chúng tôi sử dụng tăng trưởng tính bằng MB TỪ hệ thống. sysfiles WHERE LOWER(tên tệp) THÍCH '%. mdf' CHỌN @cmd = 'In ''* [' + db_name() + '] *'' ; + CHAR(10) + 'Thay đổi cơ sở dữ liệu [' + db_name() + '] ' + CHAR(10) + ' THÊM TẬP TIN NHÓM FGUserData ;' + CHAR(10) + 'Thay đổi cơ sở dữ liệu [' + db_name() + '] ' + CHAR(10) + ' THÊM TẬP TIN ( TÊN = FUserData, FILENAME = ''' + @Filename + ''', ' + CHAR(10) + ' SIZE = ' + @InitialSizeKB + 'KB, MAXSIZE = UNLIMITED , FILEGROWTH = ' + @IncrementKB + 'KB )' Nếu bạn chỉ muốn đặt tệp dữ liệu mới vào đường dẫn cá thể mặc định, bạn có thể làm như Scott gợi ý - sử dụng thuộc tính máy chủ cho đường dẫn dữ liệu mặc định
Tuy nhiên, nếu bạn muốn dựa trên cơ sở dữ liệu này từ cơ sở dữ liệu hiện có (có thể là cơ sở dữ liệu bạn đang thay đổi, nếu họ chuyển cơ sở dữ liệu đó bằng tham số), thì bạn có thể thực hiện việc này
Bạn thậm chí có thể muốn cho phép người dùng của mình ghi đè lên một đường dẫn cụ thể (hãy nghĩ đến trường hợp ổ đĩa hiện tại đang trở nên đông đúc và họ muốn bắt đầu tệp mới này ở một vị trí hoàn toàn mới) Tôi cũng thấy lạ là bạn lại bận tâm tạo một tệp dữ liệu chỉ có 32 MB. Điều đó hầu như không đủ lớn để chứa siêu dữ liệu về tệp và chắc chắn sẽ bắt đầu một chu kỳ tự động phát triển ngay khi nó hoạt động Trong bài viết này, chúng ta sẽ tìm hiểu cách chúng ta có thể quản lý nhóm tệp FILESTREAM của Cơ sở dữ liệu SQL. Tôi sẽ bao gồm các chủ đề sau
Trước tiên, chúng ta hãy kích hoạt tính năng FILESTREAM Kích hoạt tính năng FILESTREAMChúng tôi có thể kích hoạt FILESTREAM bằng công cụ quản lý cấu hình SQL Server. Để làm điều đó, hãy mở trình quản lý cấu hình SQL Server 🡪 Nhấp chuột phải vào phiên bản SQL Server mà bạn muốn bật tính năng FILESTREAM và nhấp vào Thuộc tính Trong hộp thoại Thuộc tính máy chủ SQL, nhấp vào FILESTREAM và đánh dấu vào các tùy chọn sau
Ảnh chụp màn hình Nhấn OK để lưu các thông số cấu hình. Khi các thay đổi được áp dụng, hãy khởi động lại Dịch vụ SQL Định cấu hình cấp độ truy cập FILESTREAMKhi FILESTREAM đã được bật trên phiên bản SQL Server, chúng ta phải định cấu hình cấp độ truy cập FILESTREAM. Các giá trị cấu hình hợp lệ như sau Mô tả tùy chọn Giá trị trong lệnh T-SQL Tùy chọn trong studio quản lý SQL Server Quyền truy cập FILESTREAM bị vô hiệu hóa 0 Vô hiệu hóa Truy cập FILESTREAM cho các truy vấn T-SQL 1 Đã bật quyền truy cập SQL giao dịch Truy cập FILESTREAM cho các truy vấn T-SQL và phát trực tuyến cửa sổ 2 Đã bật toàn quyền truy cập Để đặt giá trị của các tham số trên bằng SQL Server management studio, hãy mở SSMS và kết nối với phiên bản SQL Server. Nhấp chuột phải vào cá thể và chọn Thuộc tính Trên hộp thoại Thuộc tính máy chủ, nhấp vào Nâng cao. Chọn tùy chọn Kích hoạt toàn quyền truy cập từ hộp thả xuống Cấp truy cập FILESTREAM Bấm OK để lưu cấu hình và khởi động lại dịch vụ SQL Server Ngoài ra, bạn có thể chạy lệnh sp_configure để đặt cấp độ truy cập tệp cho FILESTREAM. Tham số cấu hình để đặt mức truy cập là filestream_access_level. Nếu bạn muốn bật Quyền truy cập FILESTREAM cho các truy vấn T-SQL và phát trực tuyến cửa sổ, truy vấn được viết như sau 1 2 3 4 5 6
sử dụng chính đi exec sp_configure 'filestream_Access_level', 2 cấu hình lại
Khi một tham số được đặt, bạn phải khởi động lại dịch vụ. Khi các dịch vụ được khởi động lại, hãy chạy lệnh sp_configure để xem các giá trị của tham số filestream_access_level 1 2 3 4 5
sử dụng chính đi exec sp_configure
đầu ra truy vấn Như bạn có thể thấy, giá trị của tham số filestream_access_level là hai (2). Bây giờ, chúng ta hãy tạo một nhóm tệp FILESTREAM Tạo một nhóm tệp FILESTREAM bằng SQL Server Management StudioĐể tạo nhóm tệp FILESTREAM bằng SSMS, hãy mở nó và kết nối với công cụ cơ sở dữ liệu SQL Server 🡪 Nhấp chuột phải vào cơ sở dữ liệu EltechDB 🡪 Chọn Thuộc tính Trong hộp thoại Thuộc tính cơ sở dữ liệu, bấm vào Nhóm tệp. Bấm vào Thêm nhóm tập tin. Thao tác này sẽ thêm một hàng trong chế độ xem lưới FILESTREAM. Chỉ định các tham số sau trong chế độ xem lưới
Chúng tôi đang tạo một nhóm tệp có tên là EmployeeDocument, vì vậy hộp thoại Thuộc tính cơ sở dữ liệu trông giống như sau Bây giờ chúng ta phải chỉ định đường dẫn của bộ chứa FILESTREAM mà bạn muốn lưu trữ các tệp trong đó. Để làm điều đó, bấm vào Tệp trong Thuộc tính cơ sở dữ liệu. Trên màn hình tệp, định cấu hình các tùy chọn như sau
Hộp thoại Thuộc tính cơ sở dữ liệu trông giống như sau Nhấp vào OK để tạo bộ chứa FILESTREAM. Bây giờ, hãy để chúng tôi hiểu cách tạo bộ chứa FILESTREAM bằng T-SQL Tạo một nhóm tệp FILESTREAM bằng truy vấn T-SQLChúng ta có thể sử dụng câu lệnh ALTER DATABASE ADD FILEGROUP. Chúng tôi đang thêm một nhóm tệp FILESTREAM trong cơ sở dữ liệu SQL; . Nó phải được chỉ định sau tên của Filegroup Cú pháp để thêm một nhóm tệp FILESTREAM được hiển thị bên dưới 1 2 3 4 5 6
SỬ DỤNG [chính] ĐI THAY ĐỔI CƠ SỞ DỮ LIỆU [DB_Name] ADD FILEGROUP [Filegroup_Name] CONTAINS FILESTREAM ĐI
Trong cú pháp,
Chúng tôi đang thêm một nhóm tệp có tên là EmployeeDocument trong cơ sở dữ liệu EltechDB. Câu lệnh ADD FILGROUP như sau 1 2 3 4 5 6
SỬ DỤNG [chính] ĐI THAY ĐỔI CƠ SỞ DỮ LIỆU [EltechDB] ADD FILEGROUP [EmployeeDoucment] CONTAINS FILESTREAM ĐI
Bây giờ, chúng ta phải chỉ định vị trí của bộ chứa luồng tệp. Chúng tôi đang sử dụng câu lệnh ALTER DATABASE ADD FILE TO FILEGROUP. Để thêm tệp, hãy chạy truy vấn T-SQL sau 1 2 3 4 5 6
SỬ DỤNG [chính] ĐI THAY ĐỔI CƠ SỞ DỮ LIỆU [EltechDB] ADD FILE ( NAME = N' DF_Employeedocuments', FILENAME = N' D:\EltechDB\EmployeeDocuments\' ) ĐẾN FILEGROUP [EmployeeDoucment] ĐI
Bây giờ, hãy chạy truy vấn sau để xem chi tiết về nhóm tệp FILESTREAM 1 2 3 4 5 6 7 8 9 10 11
SỬ DỤNG eltechdb đi CHỌN df. TÊN AS [Logic< Name], df. kích thước / 128 AS< [File Size], fg. TÊN AS [FileGroup< Name], df. physical_name AS [Physical Đường dẫn] TỪ hệ. database_files AS df NGƯỜI TRONG THAM GIA sys. nhóm tệp AS fg BẬT df. data_space_id = fg. data_space_id;
đầu ra Như bạn có thể thấy, nhóm tệp FILESTREAM có tên là EmployeeDocument đã được tạo và tệp dữ liệu có tên DF_EmployeeDocuments đã được thêm vào Thêm nhiều tệp dữ liệu FILESTREAM vào nhóm tệp FILESTREAMChúng ta có thể sử dụng câu lệnh ALTER DATABASE ADD FILE TO FILEGROUP để thêm tệp dữ liệu FILESTREAM thứ cấp vào Filegroup trong cơ sở dữ liệu. Giả sử chúng ta muốn thêm một tệp dữ liệu có tên DF_EmployeeContract vào cơ sở dữ liệu EltechDB. Vị trí của tệp dữ liệu FILSTREAM là D. \EltechDB\EmployeeContract. Truy vấn như sau 1 2 3 4 5 6
SỬ DỤNG [chính] ĐI THAY ĐỔI CƠ SỞ DỮ LIỆU [EltechDB] ADD FILE ( NAME = N' DF_EmployeeContracts', FILENAME = N'D:\EltechDB\EmployeeContracts' ) TỚI FILEGROUP [EmployeeDoucment] ĐI
Chạy truy vấn sau để xem chi tiết của tệp dữ liệu 1 2 3 4 5 6 7 8 9 10 11
SỬ DỤNG eltechdb đi CHỌN df. TÊN AS [Logic< Name], df. kích thước / 128 AS< [File Size], fg. TÊN AS [FileGroup< Name], df. physical_name AS [Physical Đường dẫn] TỪ hệ. database_files AS df NGƯỜI TRONG THAM GIA sys. nhóm tệp AS fg BẬT df. data_space_id = fg. data_space_id;
đầu ra Như bạn có thể thấy, tệp dữ liệu DF_EmployeeContracts đã được thêm vào cơ sở dữ liệu EltechDB SQL Tóm lượcTrong bài viết này, chúng ta đã học cách quản lý các nhóm tệp trong Cơ sở dữ liệu SQL. Chúng tôi đã học được các tình huống sau
Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu các cách khác nhau để thay đổi vị trí của các nhóm tệp FILESTREAM Nhóm tệp trong SQL Server là gì?Nhóm tệp chứa tệp dữ liệu chính và mọi tệp phụ không được đưa vào các nhóm tệp khác . Các nhóm tệp do người dùng xác định có thể được tạo để nhóm các tệp dữ liệu lại với nhau cho mục đích quản trị, phân bổ dữ liệu và vị trí.
Làm cách nào để tìm nhóm tệp trong SQL Server?Cách kiểm tra kích thước tệp SQL Server Filegroup . CHỌN sdf. tên AS [Tên_tệp], sdf. kích thước /128 AS [Size_MB], fg. tên AS [Tên_nhóm_tệp], sdf. physical_name thành [File_physical_name] TỪ hệ thống. cơ sở dữ liệu_files sdf THAM GIA BÊN TRONG hệ thống. nhóm tập tin fg TRÊN sdf. data_space_id=fg. data_space_id Làm cách nào để tăng kích thước nhóm tệp trong SQL Server?Trong SSMS. . nhấp chuột phải vào cơ sở dữ liệu của bạn chọn thuộc tính chọn tệp trong cửa sổ thuộc tính cơ sở dữ liệu Trên Kích thước tối đa tự động tăng trưởng, hãy chọn các tùy chọn tăng trưởng tự động của bạn Làm cách nào để tạo sơ đồ phân vùng trong SQL Server?Tạo lược đồ phân vùng ánh xạ nhiều phân vùng vào cùng một nhóm tệp. Nếu tất cả các phân vùng ánh xạ tới cùng một nhóm tệp, hãy sử dụng từ khóa TẤT CẢ . Nhưng nếu nhiều phân vùng, chứ không phải tất cả, được ánh xạ tới cùng một nhóm tệp, thì tên nhóm tệp phải được lặp lại, như minh họa trong ví dụ sau. |