Kích thước thuộc tính không có sẵn cho cơ sở dữ liệu


14

Gần đây tôi đã khôi phục cơ sở dữ liệu về cùng một ví dụ mà nó được sao lưu từ (SQL Server 2008 R2 Enterprise) và thấy rằng tôi không thể truy cập các thuộc tính cơ sở dữ liệu.

Tôi đã làm như sau:

  • Đã kiểm tra chủ sở hữu cơ sở dữ liệu được đặt chính xác bằng cách sử dụng sp_helpdb.
  • Thay đổi chủ sở hữu cơ sở dữ liệu thành sa. Không phải là một sửa chữa.
  • Thay đổi chủ sở hữu cơ sở dữ liệu trở lại sysadminngười dùng của tôi . Không phải là một sửa chữa.
  • Phát hành DBCC updateusagechống lại cơ sở dữ liệu bị ảnh hưởng. Không phải là một sửa chữa.
  • Chạy DBCC CheckDBtrên một bản sao được khôi phục đến một phiên bản khác. Không tìm thấy tham nhũng. Bản sao được khôi phục (từ cùng một tệp sao lưu) không gây ra bất kỳ lỗi nào khi truy cập vào cửa sổ thuộc tính cơ sở dữ liệu.

Có ai giúp được không?

Thông báo lỗi tôi nhận được khi cố gắng xem các thuộc tính là:

Không thể hiển thị hộp thoại yêu cầu. (SqlMgmt)
Kích thước thuộc tính không khả dụng cho Cơ sở dữ liệu '[DBNAME]'.
Thuộc tính này có thể không tồn tại cho đối tượng này hoặc có thể không truy xuất được do không đủ quyền truy cập. (Microsoft.SqlServer.Smo)

Tôi là một sysadminví dụ này.

Cập nhật: Theo đề xuất, tôi đã tạo một người dùng mới, làm cho nó sysadmin và thay đổi chủ sở hữu cơ sở dữ liệu thành nó. Không phải là một sửa chữa không may. Tôi sẽ xem nếu một dấu vết hồ sơ mang lại bất cứ điều gì hữu ích.

Cập nhật: Aaron - cơ sở dữ liệu ban đầu đã được đổi tên và lấy ngoại tuyến nhưng vẫn trong trường hợp đó. Bản sao lưu của cơ sở dữ liệu đó sau đó đã được khôi phục bằng tên gốc. Tên tệp của các tệp cơ sở dữ liệu mới khác với tên gốc vì chúng nằm trong cùng thư mục với mdf / ldf gốc. Các db được khôi phục hiện đang lái các ứng dụng quan trọng của chúng tôi như bình thường.


@Shanky Tôi đang sử dụng SSMS 2014 và đã thử điều này từ nhiều máy khách / máy chủ.
Peter

Có lẽ cũng chạy một dấu vết hồ sơ đối với DB nơi nó hoạt động và xem có gì khác với cái mà nó hoạt động và không hoạt động - có gì khác phải không?
Pimp Juice IT

Gần đây tôi đã có vấn đề này sau khi khôi phục một cơ sở dữ liệu lớn. Tôi rất tiếc phải nói rằng nó tự xóa. Có thể là một câu hỏi ngớ ngẩn, nhưng bạn đã kiểm tra lỗi cho bất cứ điều gì không mong muốn?
dwjv

Câu trả lời:


8

Tôi đã giải quyết điều này bằng cách khởi động lại dịch vụ SQL Server, thật không may / may mắn thay.

Ý tưởng ban đầu của tôi là tách / đính kèm cơ sở dữ liệu. Không phải tôi nghĩ rằng điều này thực sự sẽ khắc phục vấn đề, tôi chỉ đọc nó trong một diễn đàn ở đâu đó. Điều này không có tác dụng.

Tôi rất tiếc đã không làm những gì mà PJ Mahoney đề nghị lại: chạy theo dấu vết. Tôi hy vọng tôi nhìn thấy vấn đề này một lần nữa để tôi có thể tìm ra nếu một dấu vết tiết lộ bất cứ điều gì. Cám ơn vì sự gợi ý.

Ít nhất là trả lời câu hỏi của riêng tôi có nghĩa là tôi không phải thấy một đề nghị khác về việc thay đổi chủ sở hữu cơ sở dữ liệu; P

Cảm ơn


5

Tôi đã gặp lỗi tương tự khi cố gắng sửa đổi các thuộc tính tăng trưởng tệp của tệp nhật ký của cơ sở dữ liệu sản xuất. Tôi đã thử sử dụng SSMS và gặp lỗi tương tự:

Kích thước thuộc tính không có sẵn cho cơ sở dữ liệu XXX.

Tôi đã sử dụng T-SQL để sửa đổi tệp nhật ký cơ sở dữ liệu thay thế.

USE [master]
GO
ALTER DATABASE [MyDatabase] MODIFY FILE ( NAME = N'MyDatabase_log', FILEGROWTH = 524288KB )
GO

Sau khi hoàn thành lệnh, tôi có thể mở các thuộc tính cơ sở dữ liệu trong SSMS. Tôi hy vọng điều này làm việc cho người khác.


hấp dẫn! Bình luận ở đây nếu điều đó làm việc cho bạn
Peter

làm việc tốt và đúng không?
Kiquenet

1

Điều này có thể xảy ra trên các cơ sở dữ liệu rất bận rộn hoặc ngay cả khi cơ sở dữ liệu nói chung không phải là một cơ sở dữ liệu bận rộn, nhưng hiện tại nó đang thực thi một câu lệnh thay đổi nhanh chóng kích thước tệp nhật ký. Chẳng hạn, nếu bạn cố xóa một số lượng lớn hàng triệu (hàng triệu) khỏi một bảng, công cụ sẽ phải đăng nhập từng hàng cho mục đích khôi phục, điều này sẽ buộc tệp nhật ký tăng nhanh. Trong khi điều này đang diễn ra, nếu bạn cố mở các thuộc tính cơ sở dữ liệu trong SSMS, bạn sẽ thấy thông báo lỗi "kích thước thuộc tính không khả dụng .."

Một cách khác để tái tạo nó như sau: lấy một cơ sở dữ liệu rất lớn (hơn 100 triệu hàng) và thực hiện câu lệnh ALTER TABLE trên nó (ví dụ: chuyển đổi một cột char thành một varchar). Xem tệp nhật ký của bạn sẽ nổ tung trong hàng đống megs hoặc thậm chí gigabyte mỗi giây. Một lần nữa, trong khi điều này đang xảy ra, SSMS của bạn sẽ không thể cung cấp cho bạn kích thước cơ sở dữ liệu vì nó thay đổi quá nhanh để không chính xác.

Không cần phải nói, xin đừng thử điều này trên các máy chủ trực tiếp. :)


1

Chỉ cần bắt gặp điều này và từ một dấu vết, rõ ràng điều này đã bị chặn bởi một hoạt động INDEX REBUILD đang chạy

Lỗi cụ thể của tôi là

Thuộc tính SpaceAv Available không khả dụng cho Cơ sở dữ liệu '[dbOverwatch]'. Thuộc tính này có thể không tồn tại cho đối tượng này hoặc có thể không truy xuất được do không đủ quyền truy cập. (Microsoft.SqlServer.Smo)

SELECT
(SELECT SUM(CAST(df.size as float)) FROM sys.database_files AS df WHERE df.type in ( 0, 2, 4 ) ) AS [DbSize],
(SUM(a.total_pages) + (SELECT ISNULL(SUM(CAST(df.size as bigint)), 0) FROM sys.database_files AS df WHERE df.type = 2 )) AS [SpaceUsed]
FROM
sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id left join sys.internal_tables it on p.object_id = it.object_id

Nó phải có giá trị thời gian chờ rất thấp, nhưng có lẽ bạn có thể kiểm tra xem bạn có bị chặn gì không khi bạn cố gắng truy cập các thuộc tính


Hấp dẫn. Tôi sẽ kiểm tra điều đó.
Peter

0

Tôi nhận được thông báo lỗi này trong quá trình triển khai giải pháp công cụ cơ sở dữ liệu SQL Server dựa trên cơ sở dữ liệu (trên SQL Server 2008 R2). Sau khi triển khai kết thúc, lỗi không còn nữa. Điều này hơi khó chịu vì DB không ở chế độ Người dùng đơn hoặc chỉ đọc (không phải là corse) hoặc bất cứ điều gì khác cho biết lý do.

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.