100分提问,SOS存储过程还原数据库问题,兄弟们进来顶下哈

问题描述

出错的地方当一运行的时候出现错误提示对象名'dbo.fn_GetFilePath'无效。这是怎么会事,郁闷好久了,希望高手指点一下=============================以下是存储过程=============================CREATEprocEyeSystemDataBackReturn@bkfilenvarchar(1000),--定义要恢复的备份文件名@dbnamesysname='',--定义恢复后的数据库名,默认为备份的文件名@dbpathnvarchar(260)='',--恢复后的数据库存放目录,不指定则为SQL的默认数据目录@retypenvarchar(10)='DB',--恢复类型:'DB'完事恢复数据库,'DBNOR'为差异恢复,日志恢复进行完整恢复,'DF'差异备份的恢复,'LOG'日志恢复@filenumberint=1,--恢复的文件号@overexistbit=1,--是否覆盖已经存在的数据库,仅@retype为@killuserbit=1--是否关闭用户使用进程,仅@overexist=1时有效asdeclare@sqlvarchar(8000)--得到恢复后的数据库名ifisnull(@dbname,'')=''select@sql=reverse(@bkfile),@sql=casewhencharindex('.',@sql)=0then@sqlelsesubstring(@sql,charindex('.',@sql)+1,1000)end,@sql=casewhencharindex('',@sql)=0then@sqlelseleft(@sql,charindex('',@sql)-1)end,@dbname=reverse(@sql)--得到恢复后的数据库存放目录ifisnull(@dbpath,'')=''set@dbpath=dbo.f_getdbpath('')--生成数据库恢复语句set@sql='restore'+case@retypewhen'LOG'then'log'else'database'end+@dbname+'fromdisk='''+@bkfile+''''+'withfile='+cast(@filenumberasvarchar)+casewhen@overexist=1and@retypein('DB','DBNOR')then',replace'else''end+case@retypewhen'DBNOR'then',NORECOVERY'else',RECOVERY'endprint@sql--添加移动逻辑文件的处理if@retype='DB'or@retype='DBNOR'begin--从备份文件中获取逻辑文件名declare@lfnnvarchar(128),@tpchar(1),@iint--创建临时表,保存获取的信息createtable#tb(lnnvarchar(128),pnnvarchar(260),tpchar(1),fgnnvarchar(128),sznumeric(20,0),Msznumeric(20,0))--从备份文件中获取信息insertinto#tbexec('restorefilelistonlyfromdisk='''+@bkfile+'''')declare#fcursorforselectln,tpfrom#tbopen#ffetchnextfrom#finto@lfn,@tpset@i=0while@@fetch_status=0beginselect@sql=@sql+',move'''+@lfn+'''to'''+@dbpath+@dbname+cast(@iasvarchar)+case@tpwhen'D'then'.mdf'''else'.ldf'''end,@i=@i+1fetchnextfrom#finto@lfn,@tpendclose#fdeallocate#fend--关闭用户进程处理if@overexist=1and@killuser=1begindeclare@spidvarchar(20)declare#spidcursorforselectspid=cast(spidasvarchar(20))frommaster..sysprocesseswheredbid=db_id(@dbname)open#spidfetchnextfrom#spidinto@spidwhile@@fetch_status=0beginexec('kill'+@spid)fetchnextfrom#spidinto@spidendclose#spiddeallocate#spidend--恢复数据库exec(@sql)GO=============================以下是操纵备份ASP.NET代码publicstaticboolReturnDataBack(){SqlConnectioncon=DataCon.DataBaseCon();con.Open();SqlCommandcmd=newSqlCommand("EyeSystemDataBackReturn",con);cmd.CommandType=CommandType.StoredProcedure;SqlParameterbkfile=newSqlParameter("@bkfile",SqlDbType.NVarChar,1000);bkfile.Value=System.Web.HttpContext.Current.Server.MapPath("../DataBase/bithsyk.bak");cmd.Parameters.Add(bkfile);cmd.ExecuteNonQuery();cmd.Dispose();con.Close();con.Dispose();returnfalse;}===================

解决方案

解决方案二:
在查询分析器中运行了一下存储过程execEyeSystemDataBackReturn'C:InetpubwwwrootHsyk_eyeDataBasebithsyk.bak'提示错误:服务器:消息208,级别16,状态1,过程EyeSystemDataBackReturn,行22对象名'dbo.f_getdbpath'无效。
解决方案三:
'dbo.fn_GetFilePath'是个用户自定义函数,你没有定义当然出错了,看看你在什么地方调用过它
解决方案四:
--得到恢复后的数据库存放目录ifisnull(@dbpath,'')=''set@dbpath=dbo.f_getdbpath('')

这是用户自定义函数,不是系统函数,需要你自己定义的。
解决方案五:
OK了我试验一下!
解决方案六:
这个位置需要怎么定义?指点一下可以吗?ifisnull(@dbpath,'')=''set@dbpath=dbo.f_getdbpath('')脑子有点乱,比较复杂
解决方案七:
up
解决方案八:
看着头晕。。飘过。。UP一下
解决方案九:
up
解决方案十:
createfunctionf_getdbpath(@dbnamesysname)returnsnvarchar(260)asbegindeclare@renvarchar(260)if@dbnameisnullordb_id(@dbname)isnullselect@re=rtrim(reverse(filename))frommaster..sysdatabaseswherename='master'elseselect@re=rtrim(reverse(filename))frommaster..sysdatabaseswherename=@dbnameif@dbnameisnullset@re=reverse(substring(@re,charindex('',@re)+5,260))+'BACKUP'elseset@re=reverse(substring(@re,charindex('',@re),260))return(@re)end

解决方案十一:
这个添加在存储过程中?
解决方案十二:
你写的这个,怎么用呀
解决方案十三:
不知道createfunction什么意思吗?你还是不要动不动就抄代码了,先去看看基本知识吧。
解决方案十四:
我是以一次接触,输出还原备份的操作
解决方案十五:
createfunction是最基本的sql语句,这个和还原备份没什么关系
解决方案:
自定义函数,我添加进去了!
解决方案:
在数据库'master'中拒绝了CREATEDATABASE权限。权限问题吗?
解决方案:
引用2楼jinjazz的回复:

'dbo.fn_GetFilePath'是个用户自定义函数,你没有定义当然出错了,看看你在什么地方调用过它

解决方案:
用sa登陆
解决方案:
在数据库'master'中拒绝了CREATEDATABASE权限。RESTOREDATABASE操作异常终止。restoredatabasebithsykfromdisk='c:inetpubwwwrootHsyk_eyeDataBasebithsyk.bak'withfile=1,replace,RECOVERY权限问题吧!
解决方案:
现在不出错了!但数据库没回复呀!
解决方案:
楼主,给你个建议,有时候不能照搬别人的代码,要尝试着修改成适合自己的代码,就像那个自定义函数。
解决方案:
晓得了,谢谢你们大家的意见!
解决方案:
对象名'dbo.f_getdbpath'无效。没有定义

时间: 2024-10-28 06:38:02

100分提问,SOS存储过程还原数据库问题,兄弟们进来顶下哈的相关文章

问一个100分的数据库问题!!!!!!!!!!!!!!!

问题描述 现在有这样一个情况,我有4个级别的代理商.一级可以开发二级和四级,二级可以开发三级和四级.三级可以开发四级.我现在有个四级代理,我想找到他的上级..不知道我描述的清楚吗? 解决方案 解决方案二:问题清楚不清楚我不知道反正是无从下口回答!解决方案三:传销网络数据??解决方案四:给每个代理表中加一个字段用来记录它的上级就是了啊??解决方案五:你描述的很清楚,可是神仙也帮不了你.你的帖子有如下的缺点1.没有告诉大家你用的是sql还是oracle还是其他的数据库2.你是要大家帮你设计表结构,还

如果您向专家提问,专家在登录CSDN网站后将第一时间内得到通知,并且为您提供答案,如果需要向指定的专家提问,您需要至少100分可用分

问题描述 如果您向专家提问,专家在登录CSDN网站后将第一时间内得到通知,并且为您提供答案,如果需要向指定的专家提问,您需要至少100分可用分

100分在线急求 程序中执行.sql脚本 mysql的

问题描述 我想要在程序中执行mysql的脚本文件比如说点击一个button执行aaa.sql,请各位大虾给与帮助,给100分! 解决方案 解决方案二:自己来顶解决方案三:顶不要沉啊解决方案四:顶不要沉啊解决方案五:如果有存储过程,直接点击button时执行相关存储.如果没有存储过程,单独放进一个文本文件吧,要执行的时候读文件传sql过去!不过怎么感觉这是在多此一举啊.后缀为sql的文件就算是查询分析器打开也不是会自动执行的.你还是得调用执行的命令对象.和一般写法没多大区别的啊.解决方案六:顶不要

散100分,大家快来接呀! :-)

问题描述 [1]首先了解我们,你可以通过我们的产品www.i170.com和公司网站www.haiwit.com来了解我们.[2]看看你是否我们等待的人:A.在性格特点上:踏实:专注在如何执行.如何考虑细节和确保进度.质量:聪明:领悟.适应能力强,学习能力好:对于交待的事情能够自己找到解决方案:善于总结和从工作中不断进步:快手:能够快速实现想法,而后再考虑完善,懂得取舍:抓住任务的本质和要点:协作:谦虚积极.合作开放的心态,具有一定的沟通能力B.技能要求:关系型数据库(SQLServerorOr

【RMAN】利用备份片还原数据库

[RMAN]利用备份片还原数据库 BLOG文档结构图       群里有同学说把ORACLE_BASE目录删掉了,现在只有备份片和归档文件了,试问如何恢复.坑,,,,咋能这么干,ORACLE_BASE都敢删,,试着恢复了下,并且记录下来,当然软件安装部分就不记录了. 我再说说目前的情况,只有备份片和归档文件,且从文件名称是看不出dbname和dbid的,在这种情况下其实恢复控制文件是很重要的了,但是鬼知道备份片里边是不是有控制文件的备份呢?我们可能碰到的就是这样的情况,只有备份文件,其它的什么都

编程实现备份和还原数据库

备份|编程|数据|数据库  注意,下面备份还原都是用存储过程实现! if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_backupdb]GO /*--备份数据库的通用存储过程 --邹建 2003.10--*/ /*--调用示例 --备份当前数据库e

sqlserver2008根据日志还原数据库

  前言:最近项目接近了尾声,随之而来的是维护问题,当然涉及到数据库的数据维护,通过资料和实际操作整理有关误操作后根据日志还原数据库. 前提:①必须有数据库的完整备份(做个备份计划);②数据库恢复模式是完整的(FULL). 步骤:①发现误操作时,记录下时间点date并备份日志文件(备份脚本:USE master BACKUP LOG 数据库 TO disk=N'G:cclog.bak' WITH NORECOVERY); ②还原数据库(还原脚本:USE master RESTORE DATABA

100分跪求运动会管理系统

问题描述 跪求运动员管理系统含源代码时间很紧迫,我做不来,希望大家帮帮忙~~~vb.net+SQL2000这是数据库要求(也可以自己设计):系表:系ID自动增长系名称班级表:班级ID自动增长系ID班级名称运动员表:ID自动增长姓名性别班级ID学号运动员编号手动设置,4位项目表:ID自动增长项目名称田赛.径赛是否分组是否决赛报名表:ID自动增长项目ID运动员ID相同项目编号用于自动分组分组表:ID自动增长项目ID运动员ID组号道次号预赛成绩表:ID自动增长项目ID运动员ID成绩成绩表:ID自动增长

【大数据100分】大数据架构及行业大数据应用(中级教程)

[大数据100分]南大通用CTO武新:大数据架构及行业大数据应用[大数据中级教程] 主讲嘉宾:武新 主持人:中关村大数据产业联盟 副秘书长陈新河 承办:中关村大数据产业联盟 武新,南大通用高级副总裁兼CTO,法国奥尔良大学和法国国家科研中心博士:南大通用GBASE系列数据库产品的总设计师.在著名的甲骨文公司任职12年,是世界顶级的Oracle数据库专家.2010年获得中组部实施的国家"千人计划"荣誉(海外高层次人才引进计划),是国内基础软件行业唯一入选的数据库技术专家.对目前最新兴的列