Các tệp nhật ký SQL Server 2008 có kích thước tối thiểu, những gì mang lại và làm cách nào để làm cho chúng nhỏ hơn?


7

Ok, để bắt đầu, tôi đã làm rối khi tôi tạo cơ sở dữ liệu, sử dụng tập lệnh tạo gần giống như vậy: (ngắt dòng nhân tạo và tên / đường dẫn cho mục đích gói)

CREATE DATABASE [EXAMPLE] ON  PRIMARY 
( NAME = N'EXAMPLE_Data', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.mdf', 
    SIZE = 446046KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
 LOG ON 
( NAME = N'EXAMPLE_Log', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.ldf', 
    SIZE = 664505KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

bởi vì tôi đã viết kịch bản từ cơ sở dữ liệu phát triển hiện có và tôi chỉ muốn làm gì đó. Tôi đã làm rối lên khi tôi không thay đổi kích thước của mình thành một cái gì đó hợp lý (như 4096KB) và vì vậy bây giờ tôi không thể thu nhỏ logfile dưới khoảng 600MB.

Tôi biết tôi đã sai ở đâu, nhưng làm thế nào để sửa nó dễ dàng?


1
Có gì sai với tệp nhật ký 600 Meg? Đó không hẳn là rất lớn.
mrdenny

Bởi vì tôi chỉ tạo ra nó và muốn nó có thể thu nhỏ lại sau đó đến kích thước tối thiểu, không phải là 600MB. Tôi chỉ đang thực hiện cài đặt, không duy trì nó (atm, điều đó có thể thay đổi)
jcolebrand

Bạn có đặc quyền sử dụng SSMS để kiểm duyệt các tệp nhật ký không?
CoderHawk

@Sandy ~ Có, toàn quyền.
jcolebrand

Câu trả lời:


7
  1. Tháo cơ sở dữ liệu.

    sp_detach_db @dbname = 'EXAMPLE'

  2. Vật lý xóa tệp nhật ký khỏi đĩa (điều này rất quan trọng , nhưng có thể có rủi ro - xem bình luận của mrdenny bên dưới).

  3. Đính kèm cơ sở dữ liệu bằng cách sử dụng sp_attach_single_file_dbthủ tục được lưu trữ.

    sp_attach_single_file_db @dbname = 'EXAMPLE', @physname = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.mdf'


4
Nếu bạn tách cơ sở dữ liệu và xóa tệp nhật ký giao dịch, có khả năng cơ sở dữ liệu sẽ không gắn lại vào công cụ cơ sở dữ liệu. Cũng có thể dữ liệu trong cơ sở dữ liệu không nhất quán vì có thể đã có các giao dịch trong chuyến bay trong tệp nhật ký cơ sở dữ liệu chưa được chuyển từ nhật ký giao dịch sang tệp dữ liệu.
mrdenny

@mrdenny trong trường hợp cụ thể này không có hồ sơ trong các bảng, vì vậy nhật ký giao dịch nên trống. Nhưng trong tương lai tôi sẽ ghi nhớ điều đó.
jcolebrand

@marek ~ Tôi thực sự hy vọng chỉ có một vị trí trong mã của cơ sở dữ liệu ở đâu đó tôi có thể chuyển một thiết lập trong bảng và sau đó thu nhỏ tệp
jcolebrand

1
@jcolebrand Tôi biết nó khá phức tạp, nhưng đó là cách duy nhất tôi biết.
Marek Grzenkowicz

Nếu bạn không phiền nếu tôi để nó mở thêm một vài ngày nữa? Nếu không, bạn đang nhận được upvote.
jcolebrand

5

Hy vọng bạn có đủ đặc quyền để truy cập SSMS. Nếu bạn làm như vậy, hãy làm theo các bước sau

  1. Mở SSMS
  2. Kết nối với bạn SQL Server Instacne
  3. Mở Object Explorer, Nhấp chuột phải vào cơ sở dữ liệu (mà bạn muốn thu nhỏ kích thước tệp nhật ký) và chọn Thuộc tính
  4. Từ cửa sổ thuộc tính của trực tuyến - chọn tập tin
  5. Bạn sẽ thấy lưới tệp cơ sở dữ liệu ở dưới cùng bên phải
  6. Nhấp vào thêm để thêm tệp nhật ký mới, cung cấp
    • tên logic
    • Loại tệp = Nhật ký
    • Kích thước ban đầu = 1 MB (hoặc tùy chọn của bạn)
    • Cick Autogrowth và thiết lập tùy chọn phù hợp
    • Tên tệp
  7. Bây giờ bấm vào hàng nhật ký hiện có và chọn loại bỏ loại bỏ
  8. Đó là nó! bây giờ bạn có tệp nhật ký mới với kích thước tối thiểu mong muốn.

văn bản thay thế


Tôi có toàn quyền trong trường hợp này và cơ sở dữ liệu này (tôi đã thiết lập nó nhớ) và khi tôi làm đúng như những gì bạn mô tả thì tôi không thể xóa nhật ký chính cho cơ sở dữ liệu. Bởi vì đó là suy nghĩ đầu tiên của tôi, những gì bạn đang mô tả. Điều gì có thể gây ra thông báo lỗi đó? (đối với hồ sơ, hành động cuối cùng của tôi sau khoảng 10 phút Fussing là để thả các tập tin cũ, và tái tạo chúng với kịch bản đúng thiết lập kích thước tập tin thời gian này.
jcolebrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.