我知道如何过滤表列表 - 使用过滤器图标。但是,选择数据库节点时,禁用此图标。
不过,我想知道是否有可能。
首先创建两个表:
CREATE TABLE xyz (Id INT)
CREATE TABLE abc (Id INT)
Run Code Online (Sandbox Code Playgroud)
请注意以下 SQL 代码:
DELETE FROM abc
BEGIN TRAN
EXEC('
INSERT INTO xyz VALUES (1),(2)
DECLARE @x INT = (SELECT Id FROM xyz)
')
INSERT INTO abc VALUES (1)
COMMIT
SELECT * FROM abc
Run Code Online (Sandbox Code Playgroud)
运行它会输出以下错误:
Msg 512, Level 16, State 1, Line 3
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used …
Run Code Online (Sandbox Code Playgroud) 假设我有一个名为 SQL Server 的数据库bubu
,并且相应的备份文件是bubu.bak
.
如果我想使用自定义位置的后备存储恢复它,我使用以下 T-SQL 语句:
RESTORE DATABASE "bubu2" FROM DISK = N'C:\bubu.bak' WITH REPLACE, STATS = 10,
MOVE N'bubu' TO N'C:\custom\bubu.mdf', MOVE N'bubu_log' TO N'C:\custom\bubu.LDF'
Run Code Online (Sandbox Code Playgroud)
所以我有一个新的数据库bubu2
,它恰好是bubu
. 这里重要的是我假设备份包含逻辑文件bubu
和bubu_log
,因为备份文件名为bubu.bak
.
现在,假如有人重命名bubu.bak
来mumu.bak
。这样做,打破了我的逻辑,因为现在我将尝试这个 T-SQL 语句:
RESTORE DATABASE "mumu2" FROM DISK = N'C:\mumu.bak' WITH REPLACE, STATS = 10,
MOVE N'mumu' TO N'C:\custom\mumu.mdf', MOVE N'mumu_log' TO N'C:\custom\mumu.LDF'
Run Code Online (Sandbox Code Playgroud)
当然,我失败了,因为mumu.bak
不包含逻辑文件mumu
并且mumu_log
- 重命名备份文件不会重命名备份中包含的逻辑文件(当然)。
但是,如果备份文件被重命名,我该怎么做?