SQL Server:数据库的逻辑名称的功能?

时间:2015-05-18 02:12:34

标签: sql sql-server database tsql

说我的代码如下:

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)

1 个答案:

答案 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