说我的代码如下:
create database name1 on (name = N'name2', filename = N'C:\SQL\name3')
name3我明白了。
现在,' name2'应该是"逻辑名称"。根据我的发现,这意味着这是在数据库引擎中引用此数据库的适当名称。但是USE name2
会返回错误。相比之下,USE name1
工作正常。
我能找到的最佳答案是here,但是在澄清答案之前它已经关闭了(我将使用它而不是name1的例子是什么?)。
我的问题: name2的目的是什么?我何时需要在名称1上使用它?为什么它是file_spec的必需组件?
感谢。 (SQL Server 2008 R2)
答案 0 :(得分:0)
数据库可以驻留在多个文件中,例如:
CREATE DATABASE DatabaseName
ON (NAME='LogicalName1', FILENAME='C:\SQL\PhysicalName1.mdf'),
(NAME='LogicalName2', FILENAME='C:\SQL\PhysicalName2.mdf')
GO
USE DatabaseName
SELECT * FROM sys.database_files
在上面的示例中,您可以看到除了指定的两个数据文件外,还创建了一个事务日志文件。此文件与数据文件具有不同的角色(它记录数据库中的每个更改,因此如果事务未完成,则可以回滚)。
如果您使用多个数据文件(在同一文件组中),它们都会按比例填充,如果它们存储在不同的磁盘上,这对性能很有用。
如果您在单独的文件组中使用多个数据文件,则可以指定每个表(和索引)的位置,这样您就可以在一个单独的高性能(和高性能)上放置一个更频繁访问的表成本)磁盘。
有关详细信息,请参阅https://technet.microsoft.com/en-us/library/ms187087.aspx。
正如Gordon所说,当您需要引用特定文件时,逻辑文件名将在ALTER DATABASE语句中使用。使用此命令,您可以更改文件大小,自动增长设置或使特定文件脱机。此外,您可以将文件移动到另一个物理位置。见https://msdn.microsoft.com/en-us/library/bb522469.aspx