CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

创建数据库时,文件路径出错

楼主zlf_jack(风云剑客)2005-04-02 23:27:39 在 MS-SQL Server / 基础类 提问

大家好,   小弟刚学SQL   Server,   花了一个晚上大约看了一个晚上的T-SQL帮助,   编写了如下代码:  
   
  use   master  
   
  ------------------------------------------------------------  
  -----Check   whether   or   not   Having   created   the   database-------  
  ------------------------------------------------------------  
  DECLARE   @CurrentDBName   nvarchar(35)  
  SET   @CurrentDBName   =   N'XISES'  
  DECLARE   @CurrentDBPath   nvarchar(255)  
  SET   @CurrentDBPath   =   N'G:\课题\XISES\data'  
  DECLARE   @CurrentDBPrimaryMDF   nvarchar(255)  
  SET   @CurrentDBPrimaryMDF   =   N'XISESData'  
  DECLARE   @CurrentDBLogLDF   nvarchar(255)  
  SET   @CurrentDBLogLDF   =   N'XISESLog'  
   
  if   not   (exists   (select   *   from   dbo.sysdatabases   where   name   =   @CurrentDBName))  
  begin  
  CREATE   DATABASE   [@CurrentDBName]  
  ON    
  (    
  NAME   =   [@CurrentDBPrimaryMDF],  
            FILENAME   =   [@CurrentDBPath   +   @CurrentDBPrimaryMDF   +   N'.mdf'],  
            SIZE   =   10,  
                      MAXSIZE   =   50,  
            FILEGROWTH   =   5    
  )  
  LOG   ON  
  (    
  NAME   =   [@CurrentDBLogLDF],  
            FILENAME   =   [@CurrentDBPath   +   @CurrentDBLogLDF   +   N'.ldf'],  
          SIZE   =   5MB,  
            MAXSIZE   =   25MB,  
            FILEGROWTH   =   5MB    
  )  
  end  
     
  GO  
   
  程序运行时出现如下问题:  
  服务器:   消息   5105,级别   16,状态   2,行   17  
  设备激活错误。物理文件名   '@CurrentDBPath   +   @CurrentDBPrimaryMDF   +   N'.mdf''   可能有误。  
  服务器:   消息   1802,级别   16,状态   1,行   17  
  CREATE   DATABASE   失败。未能创建所列出的某些文件名。请检查前面的错误信息。  
   
  这是什么意思?怎么理解?  
  我设置的路径是直接从浏览器复制过来的,应该没有问题阿?  
  我还发现必须加中括号[]才能通过Check语法检查,   这里的[]是什么意思?  
   
  希望各位入门之人多多指点! 问题点数:100、回复次数:7Top

1 楼woodcord(我心飞翔)回复于 2005-04-03 07:45:55 得分 10

up   一下Top

2 楼zlf_jack(风云剑客)回复于 2005-04-03 20:16:14 得分 0

没人懂阿?   我现在改成硬编码,   已经创建好了数据库!  
   
  希望有懂T-SQL解析器的高手解答一下小弟的疑惑!Top

3 楼zjcxc(邹建)回复于 2005-04-03 20:27:05 得分 90

好好看看create   database的语法  
   
  CREATE   DATABASE   [@CurrentDBName]     --这里可以用变量么?  
  ON    
  (    
  NAME   =   [@CurrentDBPrimaryMDF],       --这里可以用变量么?  
            FILENAME   =   [@CurrentDBPath   +   @CurrentDBPrimaryMDF   +   N'.mdf'],       --这里可以用变量么?  
            SIZE   =   10,  
                      MAXSIZE   =   50,  
            FILEGROWTH   =   5    
  )  
  LOG   ON  
  (    
  NAME   =   [@CurrentDBLogLDF],       --这里可以用变量么?  
            FILENAME   =   [@CurrentDBPath   +   @CurrentDBLogLDF   +   N'.ldf'],       --这里可以用变量么?  
          SIZE   =   5MB,  
            MAXSIZE   =   25MB,  
            FILEGROWTH   =   5MB    
  )Top

4 楼zjcxc(邹建)回复于 2005-04-03 20:29:31 得分 0

--用[]括起来后,那些信息已经是做为对象名,而不是变量了  
   
  --你可以把你的filename改成固定的文件名,看看执行你的语句创建的是什么东东  
   
  CREATE   DATABASE   [@CurrentDBName]     --这里可以用变量么?  
  ON    
  (    
  NAME   =   [@CurrentDBPrimaryMDF],       --这里可以用变量么?  
            FILENAME   ='c:\a.mdf',--   [@CurrentDBPath   +   @CurrentDBPrimaryMDF   +   N'.mdf'],       --这里可以用变量么?  
            SIZE   =   10,  
                      MAXSIZE   =   50,  
            FILEGROWTH   =   5    
  )  
  LOG   ON  
  (    
  NAME   =   [@CurrentDBLogLDF],       --这里可以用变量么?  
            FILENAME   =   'c:\a.ldf',--[@CurrentDBPath   +   @CurrentDBLogLDF   +   N'.ldf'],       --这里可以用变量么?  
          SIZE   =   5MB,  
            MAXSIZE   =   25MB,  
            FILEGROWTH   =   5MB    
  )  
   
  --显示创建的是什么  
  select   *   from   master..sysdatabases  
  select   *   from   [@CurrentDBName]..sysfiles  
   
  Top

5 楼zjcxc(邹建)回复于 2005-04-03 20:32:18 得分 0

--正确的  
   
  use   master  
   
  ------------------------------------------------------------  
  -----Check   whether   or   not   Having   created   the   database-------  
  ------------------------------------------------------------  
  DECLARE   @CurrentDBName   nvarchar(35)  
  SET   @CurrentDBName   =   N'XISES'  
  DECLARE   @CurrentDBPath   nvarchar(255)  
  SET   @CurrentDBPath   =   N'G:\课题\XISES\data'  
  DECLARE   @CurrentDBPrimaryMDF   nvarchar(255)  
  SET   @CurrentDBPrimaryMDF   =   N'XISESData'  
  DECLARE   @CurrentDBLogLDF   nvarchar(255)  
  SET   @CurrentDBLogLDF   =   N'XISESLog'  
   
  if   not   (exists   (select   *   from   dbo.sysdatabases   where   name   =   @CurrentDBName))  
  begin  
  EXEC(N'  
  CREATE   DATABASE   ['+@CurrentDBName+N']  
  ON    
  (    
  NAME   =   ['+@CurrentDBPrimaryMDF+N'],  
            FILENAME   =   '''+@CurrentDBPath   +   @CurrentDBPrimaryMDF   +   N'.mdf'',  
            SIZE   =   10,  
                      MAXSIZE   =   50,  
            FILEGROWTH   =   5    
  )  
  LOG   ON  
  (    
  NAME   =   ['+@CurrentDBLogLDF+N'],  
            FILENAME   =   '''+@CurrentDBPath   +   @CurrentDBLogLDF   +   N'.ldf'',  
          SIZE   =   5MB,  
            MAXSIZE   =   25MB,  
            FILEGROWTH   =   5MB    
  )')  
  end  
  GO  
  Top

6 楼zlf_jack(风云剑客)回复于 2005-04-04 22:16:10 得分 0

哦,   谢了,   能解释下为什么不能用变量吗?  
   
  以微软的实力不至于编个不支持变量的DDL   SQL语句!Top

7 楼zjcxc(邹建)回复于 2005-04-05 07:58:03 得分 0

不支持就是不支持,这点在create   database的语法上写得很明白  
   
  不是什么都需要支持,关键是看有没有需要Top

相关问题

  • 数据库文件路径的更改
  • 如何变更数据库文件的存放路径
  • 可以改变tempdb数据库文件的默认路径吗?
  • 怎么得到数据库的文件路径
  • 关于数据库文件路径的问题,紧急求救!
  • 数据库中如何存放文件路径
  • 上传文件到数据库中,请问哪里出错了?
  • 把文件插入到数据库中出错
  • 为什么数据库读取的文件编译出错?
  • 将图片文件写入数据库时出错

关键词

  • 文件名
  • database
  • sql
  • currentdbprimarymdf
  • currentdbpath
  • currentdbname
  • currentdblogldf
  • filegrowth
  • 创建
  • mdf

得分解答快速导航

  • 帖主:zlf_jack
  • woodcord
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo