高分求教sql server 2005 数据备份与还原,在线等,第一个正确答案给全分!!!!

yuanyu368 2007-09-02 10:09:31
sql server 2005 做一个数据备份和还原的功能.
连接数据库采用delphi ado控件
1.备份操作如下
loc_str_sql :='BACKUP DATABASE [fszjzdbs] TO DISK = N'''+loc_str_Rec1+''' WITH NOFORMAT, NOINIT, NAME = N''TrialBK-完整 数据库 备份'', SKIP, NOREWIND, NOUNLOAD, STATS = 10';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
这部份应该没啥问题.
2.还源操作如下
loc_str_sql :='USE [master] ALTER DATABASE [fszjzdbs] SET SINGLE_USER WITH ROLLBACK IMMEDIATE';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='use master RESTORE DATABASE [fszjzdbs] FROM DISK = N'''+loc_str_rec+''' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [guest]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] DROP USER [sysdba]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] CREATE USER [sysdba] FOR LOGIN [sysdba]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;

loc_str_sql :='USE [fszjzdbs] ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [sysdba]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;

loc_str_sql :='USE [fszjzdbs] EXEC sp_addrolemember N''db_owner'', N''sysdba''';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [guest]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] DROP USER [sysdba]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;

loc_str_sql :='USE [fszjzdbs] CREATE USER [sysdba] FOR LOGIN [sysdba]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [sysdba]';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
loc_str_sql :='USE [fszjzdbs] EXEC sp_addrolemember N''db_owner'', N''sysdba''';

DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.Add(loc_str_sql);
DM.Query1.ExecSQL;
问题:
1.还原操作时,出现SCHEMA语法错误.
2.奇怪的是,我在sql server 2005的查询里执行,,sql 如下,没有报错
USE [master]
go
ALTER DATABASE [fszjzdbs] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
go
use [master]
go
RESTORE DATABASE [fszjzdbs] FROM DISK = N'e:\yyyyy\asd.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
go
USE [fszjzdbs]
GO
ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [guest]
GO
USE [fszjzdbs]
GO
/****** 对象: User [sysdba] 脚本日期: 09/02/2007 09:24:30 ******/
DROP USER [sysdba]
GO
USE [fszjzdbs]
GO
CREATE USER [sysdba] FOR LOGIN [sysdba]
GO
USE [fszjzdbs]
GO
ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [sysdba]
GO

USE [fszjzdbs]
GO
EXEC sp_addrolemember N'db_owner', N'sysdba'
GO

USE [fszjzdbs]
GO
ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [guest]
GO
USE [fszjzdbs]
GO
/****** 对象: User [sysdba] 脚本日期: 09/02/2007 09:24:30 ******/
DROP USER [sysdba]
GO
USE [fszjzdbs]
GO
CREATE USER [sysdba] FOR LOGIN [sysdba]
GO
USE [fszjzdbs]
GO
ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [sysdba]
GO
USE [fszjzdbs]
GO
EXEC sp_addrolemember N'db_owner', N'sysdba'
GO
兄弟弄了好半天,也没搞明白,我对sql server 2005是一知半解,请高手赐教,感谢!!!!急,我ado连接,用的是sa用户
,程序里面的sysdba,我建的用户
...全文
550 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongqi162 2007-09-06
  • 打赏
  • 举报
回复
你再多试试,网络路径都可以备份何况本地路径了,不用sqlserver没办法测试
bee2518 2007-09-06
  • 打赏
  • 举报
回复
如果系统权限不让程序写入,估计是不行,不然病毒就可以为所欲为了
yuanyu368 2007-09-02
  • 打赏
  • 举报
回复
问题解决了,不好意思,,那我在这里,再问一个问题,上边的不答了,问题是出在备份上

现在的问题是,

我安装的是sql server 2005 简版,,,,在备份的时候,为什么不可以备到系统安装盘之外的地方呢?
比如,我SQL装在C盘,,而我备份路径选D,E,F.....都会报错,,,,

如果我就想在其它盘里备份,应该怎么设置,或怎么写这个备份SQL,,
,如果可以手动改一下,比如E:\yyyy,,erveyone用户改成完全控制,是可以备份的,现在我要想完全用程序实现,应该怎么做,

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧