- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
要求:我想使用 cmdshell 命令(在标题中提到)从 SQL-Server 数据库触发器创建文本文件。
场景:
S1:当我尝试从触发器执行 cmdshell 命令(在标题中提到)以创建文本文件并在其中写入一些内容时,它将正确执行并创建文件。
S2:当我尝试通过 IIS 从 Windows Server 2016 WebAPI 服务调用和执行相同的场景 S1 时,我们在事件查看器中收到以下错误。
最佳答案
xp_CmdShell
需要 windows account映射成功执行。如果您使用具有 sysadmin
角色的用户登录(我猜这是您的第一个场景),则使用的帐户将是 SQL Server 服务帐户。
如果用户不是 sysadmin
(这应该是 IIS 用户),那么它将模拟配置的帐户以获取名为 ##xp_cmdshell_proxy_account##
的特殊凭据,您需要对其进行配置。
要设置此帐户,请使用 SP sp_xp_cmdshell_proxy_account ,例如:
EXEC sp_xp_cmdshell_proxy_account 'DOMAIN\SQLServerCMDProxy','sdfh%dkc93vcMt0';
您可以检查此映射:
select * from sys.credentials
您还需要在 xp_cmdshell
过程上授予执行命令,如果您还没有:
GRANT EXEC ON xp_cmdshell TO 'IISUser'
您可以通过模拟具有足够权限的用户登录来测试它是否正常工作:
EXECUTE AS LOGIN = 'IISUser' -- Shift priviledges to this login for the current session
EXEC xp_cmdshell 'dir *.exe'; -- Try to execute the xp_cmdshell
REVERT -- Revert to the previous login
PD:在您的 SQL Server 上启用 xp_cmdshell
时要非常小心,因为它可能会打开安全漏洞,特别是在授予不受控制的登录权限时。即使您将特定调用封装在 SP 中,也有用户可以绕过并直接执行 xp_cmdshell
的变通方法。执行此操作的正确方法是通过自定义登录进行证书签名。
关于c# - 尝试通过来自数据库触发器的 Web 请求执行 "EXECUTE Master.dbo.xp_CmdShell"命令以在本地创建文本文件时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54513436/
在查询中写入以下内容有区别吗: SELECT * FROM dbo.Product 相比于: SELECT * FROM [dbo].[Product] 一个比另一个好还是无关紧要? 最佳答案 没有区
这是有效的 dbo.dbo 吗?如果是,那是什么意思?我在别人写的查询中发现了这一点: 从dbo.tmp_BDCode aob inner join dbo.dbo.tmp_BDCode_03 ao
当我创建一个新表时,我知道我可以执行以下操作: CREATE TABLE Users ( [Id] INT NOT NULL PRIMARY KEY ) 但是 [dbo].以下示例中的部分含义
我正在将一个使用 Membership 的现有网络应用程序移植到一个使用 Identity 的新应用程序。我已经更新了所有表定义,在 VS Community Edition 2015 版本 14.0
我正在使用 Entity Framework 5 并执行一个简单的查询以从表中获取一些用户。 SQL 数据库已经创建,所以我使用我的实体作为映射我所拥有的东西的一种方式。 当我运行我的查询时,我检测到
我使用了以下分割函数: CREATE FUNCTION dbo.Splitfn(@String varchar(8000), @Delimiter char(1)) returns @te
我使用的是 sql server 2008 r2。 我想为我的所有作业创建脚本以进行备份。 我需要找到一个作业中存在的所有对象。现在我可以做到了,但是 为了实现这个目标,我得到了这个查询的所有运算符
我有一个带有一些函数和触发器的 SQL 项目。 在 Visual Studio 2010 中,我可以只指定数据库连接字符串并进行部署。这很好用。 但是现在迁移到 Visual Studio 2013
我们的应用程序不需要身份使用的过多“登录”和“声明”功能。如果没有在数据库中创建这些表 simlpy 就好了,但我不想重新实现所有身份类... 我猜是这样的 public ApplicationDbC
我已经设置了正确的 SQL Server 版本并添加了 master 数据库作为数据库引用。 在添加引用之前和之后,master 数据库有几个 Unresolved 引用,所有这些引用都消失了。 只有
我刚刚在 TFS2012 服务器上下载并安装了 Team Foundation Server 2012 Update 1,现在无法配置构建 Controller 或编辑构建定义。 我从这里下载了更新:
我在服务器中发送请求。 $custormerParams = array( "CustomerID" =>123, "CustomerAltID" =>'cus
您好,我在 sqlserver 2008 中创建了一个 udf 函数...当我尝试访问它时出现错误“无效的对象名称 'dbo.Function_Client”我想从表中返回记录数并将其分配给变量以返回
当我扫描我的数据库时,它显示了一个结果,如 VA1143 'dbo' user should not be used for normal service operation in 漏洞评估扫描 他们
我已经尝试用以下 100 种不同的方式编写代码,但无法找出正确的语法。看来无论我怎么写, $loggeduser 都不会传递给 WHERE 用户名。我究竟做错了什么?什么是正确的语法? $query
在我的本地或专用服务器上,当我创建一个表时,我看到表名如下: dbo.Foo 因为我从某个 plesk 环境中获得了一个数据库帐户,所以创建的表的名称为: mydbuser.Foo 前缀对我的代码有何
我从旧的 sql server (2000) 导入了一堆表到我的 2008 数据库。所有导入的表都以我的用户名为前缀,例如:jonathan.MovieData。在表 properties 中,它将
我的一位同事给我一项任务,要确保存储过程中的所有表名和页面都包含相关模式? 例如,如果我在数据库中有一个表是 dbo.table1,那么在查询中如果我有: Select * from table1 他
我收到此错误:[SqlException (0x80131904): Invalid object name 'dbo.UserRoles'.],但我无法捕捉到错误所在。我可以从其他表中检索其他数据,
在此问题上,我的SQL出现问题,我已经从sys.servers中选择了*,以检查是否列出了我的服务器。 我还从sys.servers中执行了查询选择名称,并且列出了我的服务器名称。 这是我的代码
我是一名优秀的程序员,十分优秀!