以下是使用sp_executesql的动态过滤解决方案
IF OBJECT_ID(N'dbo.GetOrders', N'P') IS NOT NULL DROP PROC dbo.GetOrders;
GO
CREATE PROC dbo.GetOrders
@orderid AS INT = NULL,
@custid AS INT = NULL,
@empid AS INT = NULL,
@orderdate AS DATE = NULL
AS
DECLARE @sql AS NVARCHAR(1000);
SET @sql =
N'SELECT orderid, custid, empid, orderdate, filler'
+ N' /* 27702431-107C-478C-8157-6DFCECC148DD */'
+ N' FROM dbo.Orders'
+ N' WHERE 1 = 1'
+ CASE WHEN @orderid IS NOT NULL THEN
N' AND orderid = @oid' ELSE N'' END …
Run Code Online (Sandbox Code Playgroud) 我们的 DBA 不在,我正在尝试将我们的(远程)开发数据库备份到 UNC 路径。我在以特定的 Windows 域帐户(例如CORP\myUser
)登录 Management Studio 时正在运行备份操作。我已经检查过此域帐户对 UNC 路径具有完全控制权限\\nameOfMachine\backup\
。
当我尝试执行以下操作时 CORP\myUser
BACKUP DATABASE [DEV] TO DISK = N'\\nameOfMachine\backup\dev.bak' WITH COPY_ONLY, INIT;
Run Code Online (Sandbox Code Playgroud)
我收到错误
Cannot open backup device '\\nameOfMachine\backup\dev.bak'.
Operating system error 5(Access is denied.).
Run Code Online (Sandbox Code Playgroud)
这似乎表明 SQL Server 用于运行备份命令的任何帐户都没有该 UNC 路径的权限。
我没有办法将 RDP 连接到开发数据库服务器并找出 SQL Server 使用哪个帐户来执行上面的备份命令。有没有办法使用例如动态管理视图从 Management Studio 中找出这一点?