c# - 从应用程序恢复时的 SQL 查询问题
问题描述
我想要做的是在 asp.net 应用程序上创建一个按钮来恢复保存的 SQL 备份。
我创建了一个程序如下,
create procedure sp_REstorefromdesktop @db varchar(100) , @varpath varchar(100)
as
begin
declare @varfull varchar(150) ;
set @varfull = 'C:\Users\xxxxxxxxxx\Documents\SQL Server Management Studio\Backup Databases\'+ @varpath;
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = CONCAT('ALTER DATABASE ',@db,' SET SINGLE_USER WITH ROLLBACK IMMEDIATE;');
EXEC(@SQL)
RESTORE DATABASE @db FROM DISK = @varfull WITH FILE = 1, NOUNLOAD, STATS = 10
SET @SQL = CONCAT('ALTER DATABASE ',@db,' SET MULTI_USER;');
EXEC(@SQL)
end
EXEC sys.sp_MS_marksystemobject sp_REstorefromdesktop
use master
exec [master].dbo.sp_REstorefromdesktop 'BIJOU' ,'Test07222020151826.bak'
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
问题是它在 SQL Server Management Studio 中工作,但我无法执行查询,因为它断开连接,而且我怀疑这my entity
与它有关。
编辑#2:
应用程序中的代码:
try
{
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd0 = new SqlCommand(" use master ; exec sp_REstorefromdesktop '" + Database+"' ,'"+Filepath+"' ", con);
cmd0.ExecuteNonQuery();
con.Close();
Label2.Text = "Done";
}
catch (Exception ex)
{
Label2.Text = ex.Message;
}
编辑#3 ,因此它似乎无法按预期工作,...等待我需要确认的内容,然后我将发布
编辑#4
事实证明,我遇到了所有查询的问题:
SqlCommand cmd1 = new SqlCommand("ALTER DATABASE [" + Database + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE ", con);
SqlCommand cmd2 = new SqlCommand("USE MASTER RESTORE DATABASE [" + Database + "] FROM DISK='" + Filepath + "' WITH FILE = 1, NOUNLOAD, STATS = 10", con);
SqlCommand cmd3 = new SqlCommand("ALTER DATABASE [" + Database + "] SET MULTI_USER", con);
解决方案
抱歉,我解决了问题,我现在觉得自己像个愚蠢的人,无论如何问题是我颠倒了 2 个变量
String Filepath = DropDownList1.Text;
string Database = DropDownList3.Text;
现在解决方案有效,再次抱歉。
推荐阅读
- php - 获取非英文字符的单词首字母
- javascript - 从表中的对象数组返回键对值
- json.net - 我删除了 Netwonsoft.json 的所有实例,现在我的 TFS 2017 构建代理失败 - 我该如何取回它?
- acumatica - 扩展 JAMS 制造逻辑会给出消息“尝试通过方法访问 'PX.Data.PXGraphExtension`1
..ctor()' 失败 - node.js - 如何向节点 https 请求添加标头授权
- python - 给定 6 个不同高度的块 h1, h2 。使用 3 个积木为所需高度 h1、h2 的每个塔制作 2 个塔
- android - 适用于 IOS 和 Android 的 Flutter 上的 Firebase db 集成
- sql - 按周排序,2 年 postgresql 之间的数据
- single-sign-on - 使用应用程序网关和 ASE 的 Azure AD 重定向 URL
- c++ - 是否可以重新创建一个已被放置新的“破坏”的数组?