
在Transact-SQL中,使用CREATE DATABASE命令可以创建一个新的数据库。命令格式为:CREATE DATABASE name [ WITH LOCATION = 'dbpath' ],其中name是新数据库的名称,dbpath是新数据库在文件系统中存储的可选位置。
命令执行成功时,将返回创建数据库的确认信息。若用户没有CREATEDB权限,则会显示错误信息:“用户'username'无权创建/删除数据库”。如果所声明的数据库已存在,将出现错误提示:“数据库'name'已存在”。此外,数据库名称和路径不得包含单引号,因为这会导致创建数据库目录的shell命令执行失败。
在使用CREATE DATABASE命令时,如果尝试使用无效路径,系统会返回错误:“路径'xxx'无效”。这可能是由于输入路径错误或引用的环境变量不存在。同样,如果在事务块中调用CREATE DATABASE,也会收到错误:“创建数据库时不能在事务块中调用”。在这种情况下,需要先完成事务。
如果遇到“无法创建数据库目录'xxx'”或“无法初始化数据库目录”的错误,这通常意味着对数据目录的权限不足,磁盘空间已满或其他文件系统问题。在数据库服务器运行的机器上,必须能够访问该路径。如果路径包含斜杠,斜杠前的部分会被解释为环境变量,以控制哪些用户可以在何处创建数据库。
为了在另一块硬盘上存放数据库,可以声明一个可选的数据库位置。该路径必须提前用initlocation准备好。如果路径包含斜杠,斜杠前的部分会被解释为环境变量,这允许数据库管理员对创建数据库的位置进行控制。如果服务器编译时带有ALLOW_ABSOLUTE_DBPATHS选项,绝对路径(例如,'/usr/local/pgsql/data')也可以使用。