javascript - 从存储过程中备份数据库在本地工作,但在生产中没有
问题描述
我需要通过 web 应用程序上的 clic 按钮备份我的数据库。我将代码放在 clic 调用的 SP 中,它创建一个 .bak 并将其存储在服务器文件夹中。这可以完美地直接在 SQL SERVER 中执行 SP,单击本地 Web 应用程序中的按钮,但在生产中没有。
本地和生产中的代码是相同的。
我尝试以多种方式进行 BK:
- 将数据库 DATABASENAME 备份到磁盘 = @route
- set @query = 'backup database DATABASENAME to disk = ' + '''' + @route + '''' exec(@query) 捕获变量中的信息。
- set @query = '备份数据库 DATABASENAME 到磁盘 = ' + '''' + @route + '''' exec @respuesta = sp_executesql @query
同样,所有这些方式都适用于本地,但不适用于生产。
这是我的SP:
ALTER procedure [dbo].[sp_IWBackupDatabase]
as
begin
declare @route nvarchar(500), @query nvarchar(1000), @respuesta int = 1
set nocount on
set @route = 'I:\SERVERFOLVER\BackupDB\DATABASENAMEFull.bak'
begin try
backup database DATABASENAME to disk = @route
set @respuesta = 0
end try
begin catch
set @respuesta = 1
end catch
select @respuesta Respuesta
end
这是我与 JS 的通话:
function BackupDatabase() {
$.post('main.php', {
action: 'BackupDatabase'
}, function(e) {
if (e.error) {
if (e.r == "SQLSTATE[IMSSP]: The active result for the query contains no fields.") {
Core.ShowNotific8('It WORKS', 'lime', false);
DBWasBackUp = 1;
$('#btn_CreateDBBK').attr('disabled', 'disabled');
} else {
Core.ShowNotific8('It NOT WORKS', 'ruby', false);
DBWasBackUp = 0;
$('#btn_CreateDBBK').removeAttr('disabled');
}
} else {
if (e.r[0]['Respuesta'] == '0') {
Core.ShowNotific8('It WORKS', 'lime', false);
DBWasBackUp = 1;
$('#btn_CreateDBBK').attr('disabled', 'disabled');
} else {
Core.ShowNotific8('It NOT WORKS', 'ruby', false);
DBWasBackUp = 0;
$('#btn_CreateDBBK').removeAttr('disabled');
}
}
});
return false;
}
最后,这是来自 PHP 的调用:
function BackupDatabase()
{
$cnx = $this->connectSqlSrv():
$sth = $cnx->prepare("Exec sp_IWBackupDatabase");
$retval json_encode($retval);
}
解决方案
这可能是权限。当您在 VS 下运行该站点时,该用户正在作为您的本地 Windows 用户运行。当您部署到 IIS 时,它作为应用程序池用户运行。通过转到 IIS > 站点 > 右键单击站点 > 管理网站 > 高级设置来检查正在运行的用户。那是它正在运行的用户,并且该用户可能需要具有 SQL 访问权限。如果您需要添加新的应用程序池,请查看此处:https ://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/#how-to
推荐阅读
- c - 如何将 pid 的值保存在数据结构中并稍后使用 fork() 访问它?
- javascript - 如何在html中允许和显示额外的空格
- r - 来自 R Shiny 应用程序的子背景 Julia 进程在应用程序关闭后不会保持活动状态
- azure-synapse - 标题从镶木地板文件中读取为行
- javascript - Svelte Firebase:未解析的函数或方法 firestore()
- jquery - 如何在打字稿中正确使用 jquery-mask-plugin?
- flutter - Flutter Amplify Cognito ......没有可用的 Amplify 类
- authentication - 覆盖 SignInManager.PasswordSignIn 以便我可以在 MS.Identity 中使用其他内容
- python - 变量输入函数 scipy.curve_fit
- algorithm - 尝试为我的游戏创建路径算法