Vô tình thay đổi tên cơ sở dữ liệu (SQL Server 2008)


8

Nó đã không xảy ra với tôi YET. Nhưng tôi đã suy nghĩ về điều này.

Tôi đang loay hoay với môi trường đào tạo của mình, và do nhầm lẫn, tôi đã nhấp vào tên cơ sở dữ liệu, và sau đó tôi chạm vào chữ A.

Vỏ

Hãy giả sử rằng tôi nhấn enter. Bây giờ cơ sở dữ liệu được gọi là A và tôi không nhớ tên ban đầu. CTRL + Z không hoạt động.

trường hợp2

Phải làm gì trong trường hợp như thế này, trong môi trường sản xuất?

Tôi biết điều đó không thể xảy ra, vì cơ sở dữ liệu không được đặt là NGƯỜI DÙNG. Nhưng nếu nó xảy ra. Phải làm sao Vì lý do, hãy nói rằng đó là một cơ sở dữ liệu mà không ai đang sử dụng ngay bây giờ.


2
Tôi có một người dùng cụ thể có ALTER DATABASEquyền và chỉ đăng nhập với tư cách người dùng đó khi tôi thực sự muốn chạy một ALTER DATABASEtập lệnh. Bằng cách đó, bạn sẽ không bao giờ làm như trên
Mark Sinkinson

Câu trả lời:


12

Nhấp chuột phải vào cơ sở dữ liệu, đi đến tập tin. Bạn có thể thấy tên tập tin gốc. Điều này sẽ giúp bạn tìm tên cơ sở dữ liệu chính xác một cách dễ dàng. Tên tập tin sẽ không được thay đổi khi đổi tên.

Bạn cũng có thể thử nhìn vào của bạn fn_dblog. Nó không có giấy tờ nhưng bạn có thể thấy (và bộ lọc) cho các hành động mới nhất.

SELECT * 
FROM fn_dblog(NULL,NULL)

2
Dữ liệu không được hiển thị từ truy vấn này trong văn bản thuần túy. Sẽ cần phải chuyển nó thành dạng có thể đọc được bằng một cái gì đó nhưSELECT CAST([RowLog Contents 0] AS sysname) ,CAST([RowLog Contents 1] AS sysname) FROM sys.fn_dblog(NULL,NULL) WHERE Context = 'LCX_BOOT_PAGE' AND [Offset in Row] =52
Martin Smith

7

Tôi nghi ngờ bạn sẽ có một cơ sở dữ liệu trong sản xuất có tên mà bạn không biết hoặc không có tài liệu ở đâu đó.

Nếu nó xảy ra trong sản xuất, bạn có thể tra cứu danh sách các bản sao lưu hiện có bằng cách sử dụng

RESTORE HEADERONLY FROM DISK = '<backuplocation>' 

Hoặc sử dụng dbo.backupsettừ msdb.

SELECT DISTINCT database_name FROM msdb.dbo.backupset

5

Bạn có thể xem Nhật ký máy chủ SQL lần cuối cùng SQL Server khởi động và xem xét từng trường hợp của 'Khởi động cơ sở dữ liệu' DBName '. Sau đó, bạn có thể so sánh danh sách này với kết quả của cơ sở dữ liệu sys.dat. Bất kỳ cơ sở dữ liệu mới và cơ sở dữ liệu bạn đã thay đổi sẽ không có trong danh sách nhật ký Máy chủ SQL.

Một cách khác, có lẽ tốt hơn là truy vấn theo dõi và bộ lọc mặc định theo :: fn_trace_gfort database_id. Giả sử rằng có một số DB sử dụng gần đây, cột cơ sở dữ liệu sẽ hiển thị tên cũ và sau đó trong một hàng gần đây, tên mới với một loại sự kiện của Object: Altered.

SELECT  *
        ,cast(value as nvarchar(1000))
FROM   ::fn_trace_getinfo(default)
WHERE   traceid = 1 and   property = 2;

SELECT  ftg.StartTime,
        ftg.EndTime,
        te.name,
        ftg.sessionLoginName,
        ftg.ObjectName,
        ftg.DatabaseName,
        ftg.ServerName,
        ftg.LoginName,
        ftg.hostName,
        ftg.NTUserName,
        ftg.DatabaseID,
        ftg.TextData,
        ftg.TargetuserName
        ,SPACE(10) AS [Space]
        ,*
FROM    ::fn_trace_gettable('Z:\SQLServer\MSSQL\Log\log_5.trc', default) AS ftg 
INNER JOIN
        sys.trace_events AS te 
        ON  ftg.EventClass = te.trace_event_id  
ORDER BY
        ftg.StartTime DESC
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.