SQL中怎么用ALTER DATABASE语句修改数据库

SQL中怎么用ALTER DATABASE语句修改数据库,第1张

方法如下:

alter datebase db_name

add file

(

name = 'file_name',

filename = 'F:\data\file_name.ndf',

size = 2MB,

maxsize = 100MB,

filegrowth = 5MB

)to filegroup **

alert database db_name

modify file

(name = file_name,--file_name 是要修改的数据库文件

size = 4MB)

ALTER DATABASE:

在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。

语法:

ALTER DATABASE database

{ ADD FILE <filespec >[ ,...n ] [ TO FILEGROUP filegroup_name ]

| ADD LOG FILE <filespec >[ ,...n ]

| REMOVE FILE logical_file_name

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILE <filespec >

| MODIFY NAME = new_dbname

| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }

| SET <optionspec >[ ,...n ] [ WITH <termination >]

| COLLATE < collation_name >

}

<filespec >::=

<optionspec >::=

最近遇到一个服务器的数据库文件增长很快,情况属于正常,磁盘空间很快就要满了,但是另一个分区还有大把的空间,所以寻思着怎么把数据库文件,放过去,代码如下:

DECLARE @DBNAME VARCHAR(255)

DECLARE @TargetPath VARCHAR(255)

DECLARE @CmdCommand VARCHAR(2000)

SET @DBNAME='TEST'

SET @TargetPath='D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA'

--第一步:设置数据库脱机

SET @CmdCommand= 'ALTER DATABASE '+@DBNAME+' SET OFFLINE'

EXEC(@CmdCommand)

--第二步:物理拷贝数据库文件到新目录

DECLARE @FileName VARCHAR(255)

DECLARE @SourceFullName VARCHAR(255)

DECLARE FileCur CURSOR for SELECT name,physical_name from sys.master_files where database_id=db_id(@DBNAME)

OPEN FileCur

FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName

WHILE @@FETCH_STATUS=0

BEGIN

SET @CmdCommand= 'copy "'+@SourceFullName+'" "'+@TargetPath+'"'

EXEC master..xp_cmdshell @CmdCommand

--修改数据库文件的路径指向新目录

SET @CmdCommand='ALTER DATABASE '+@DBNAME+' MODIFY FILE(FILENAME='''+@TargetPath+CASE WHEN RIGHT(@TargetPath,1)='\'THEN'' ELSE'\' END+

RIGHT(@SourceFullName, CHARINDEX('\', REVERSE(@SourceFullName))-1)+''',name='''+@FileName+''')'

EXEC(@CmdCommand)

FETCH NEXT FROM FileCur INTO @FileName,@SourceFullName

END

CLOSE FileCur

DEALLOCATE FileCur

--第三步:设置数据库联机

SET @CmdCommand= 'ALTER DATABASE '+@DBNAME+' SET ONLINE'

EXEC(@CmdCommand)

也可以把这个做成一个过程,就不在这里修改了。

1. 在 MySQL 中,可以使用 alter database 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:

alter database [数据库名] {

[ default ] character set <字符集名>|

[ default ] collate <校对规则名>}

语法说明如下:

alter database 用于更改数据库的全局特性。

使用 alter database 需要获得数据库alter权限

数据库名称可以忽略,此时语句对应默认数据库

character set 子句用于更改默认的数据库字符集

实例1:

查看test_db数据库的定义声明

使用命令行工具将数据库test_db的指定字符集修改为gb2312,默认校对规则修改为gb2312_unicode_ci

alter database test_db default character set gb2312 default collate gb2312_chinese_ci

查看修改后的test_db数据库的dinginess声明


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9967804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存