小编Ste*_*eve的帖子

累计到前一行

我需要一些窗口函数方面的帮助。我知道你可以计算一个窗口内的总和和一个窗口内的运行总数。但是是否可以计算先前的运行总计,即不包括当前行的运行总计?

我假设您需要使用ROWorRANGE参数。我知道有一个CURRENT ROW选项,但我需要CURRENT ROW - 1,这是无效的语法。我对这些ROWRANGE论点的了解有限,因此将不胜感激地收到任何帮助。

我知道这个问题有很多解决方案,但我希望了解ROW,RANGE参数,并且我认为可以用这些来解决问题。我已经包含了一种可能的方法来计算以前的运行总数,但我想知道是否有更好的方法:

USE AdventureWorks2012

SELECT s.SalesOrderID
    , s.SalesOrderDetailID
    , s.OrderQty
    , SUM(s.OrderQty) OVER (PARTITION BY  SalesOrderID) AS RunningTotal
    , SUM(s.OrderQty) OVER (PARTITION BY  SalesOrderID 
                         ORDER BY SalesOrderDetailID) - s.OrderQty AS PreviousRunningTotal
    -- Sudo code - I know this does not work
    --, SUM(s.OrderQty) OVER (PARTITION BY  SalesOrderID 
    --                   ORDER BY SalesOrderDetailID
    --                   ROWS BETWEEN UNBOUNDED PRECEDING 
    --                                   AND CURRENT …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 window-functions

15
推荐指数
1
解决办法
4万
查看次数

查看数据库图表所需的权限

我最近设置了 SSDT 供我们的开发人员使用。我们通过 SSDT 通过限制每个开发人员在连接到服务器(db_datareader、db_datawriter)时拥有的权限来强制更改我们的开发数据库。在 SSDT 中,我们使用部署脚本将更改发布到数据库,该脚本使用具有提升权限的登录进行连接。

我的问题。鉴于我们已经走到了这个长度来锁定数据库(以阻止模式漂移);有没有什么方法可以让开发人员在没有 db_owner 权限的情况下查看这个数据库上的图表?我知道每个开发人员都可以创建和查看他或她自己的图表,但我希望他们能够查看由许多不同开发人员创建的所有图表。

我不认为这会有所帮助,但我们正在运行 sql server 2012

任何帮助都会得到很大的帮助。

sql-server permissions sql-server-2012

11
推荐指数
1
解决办法
3万
查看次数

从完全恢复切换到简单恢复

这是一个有助于我理解的理论问题。在sql server中从完全恢复模式切换到简单恢复模式的过程是什么?

是不是流程如下:

  1. 在切换到 simple 之前进行 trans log 备份,以便我可以在切换之前进行时间点恢复。
  2. 切换到简单。
  3. 可能使用 TRUNCATE ONLY 运行 DBCC SHRINKFILE 以释放一些磁盘空间。
  4. 可能更改数据库以减少 trans 日志文件的大小。
  5. 执行完整备份。

我想我的主要问题是关于第 1 点。如果我不进行 trans log 备份,将 SIMPLE 丢弃最终 trans log 中的任何数据,或者切换到 SIMPLE 备份 trans log(我认为不会)。

此外,我认为最好的做法是在切换到 SIMPLE 后执行完整备份,以便可以在检查点将新事务从 trans 日志推送到数据文件。

sql-server backup recovery

5
推荐指数
1
解决办法
6370
查看次数