小编Eri*_*ess的帖子

SQL Server索引命名约定

是否有一些标准的方法来为SQL Server命名索引?似乎主键索引名为PK_,非聚簇索引通常以IX_开头.除了唯一索引之外,是否还有任何命名约定?

sql-server indexing naming-conventions

160
推荐指数
3
解决办法
8万
查看次数

PowerShell数组初始化

在PowerShell中初始化数组的最佳方法是什么?

例如,代码

$array = @()
for($i=0; $i -lt 5;$i++)
{
    $array[$i] = $FALSE
}
Run Code Online (Sandbox Code Playgroud)

生成错误

Array assignment failed because index '0' was out of range.
At H:\Software\PowerShell\TestArray.ps1:4 char:10
+         $array[$ <<<< i] = $FALSE
Run Code Online (Sandbox Code Playgroud)

arrays powershell

71
推荐指数
9
解决办法
19万
查看次数

理解复杂SQL语句的最佳方法是什么?

有没有人有方法来理解复杂的SQL语句?在阅读结构/ OO代码时,通常有一些抽象层可以帮助您将其分解为可管理的块.但是,通常在SQL中,您似乎必须同时跟踪查询的多个部分中发生的情况.

此问题的推动力是此问题中讨论的关于复杂连接的SQL查询.在盯着答案查询几分钟后,我终于决定使用特定记录逐步查询查看发生了什么.这是我能想到的唯一方法来逐一理解查询.

有没有更好的方法将SQL查询分解为可管理的部分?

sql database

43
推荐指数
7
解决办法
3万
查看次数

在PowerShell中自动化安全FTP的最佳方法是什么?

我想使用PowerShell自动化FTP下载数据库备份文件.文件名包含日期,因此我不能每天运行相同的FTP脚本.是否有一种干净的方法来构建PowerShell或使用.Net框架?

更新我忘了提到这是一个通过安全的FTP会话.

.net ftp powershell

26
推荐指数
3
解决办法
5万
查看次数

如何在SSRS中自动化报告交付

我在SQL Server Reporting Services(SSRS)中有一个报告,我想安排自动作为电子邮件运行.我希望将报告附加为Excel文件.
根据微软的概述,这应该是可能的.

报告发送.SQL Server Reporting Services支持按需(拉)和基于事件(推送)的报告传递.用户可以使用基于Web的格式或电子邮件查看报告.

但是,我无法找到有关如何实际执行此操作的任何信息.有谁知道应该使用什么工具或哪里有一个好的教程?

谢谢!

sql-server reporting reporting-services

16
推荐指数
1
解决办法
8万
查看次数

在SQL查询中替换多个字符串

我正在SQL Server中编写一个SQL查询,我需要用一个字符串值替换多个字符串值.例如

Product     Quantity
-------     --------
Apple       2
Orange      3
Banana      1
Vegetable   7
Dairy       6
Run Code Online (Sandbox Code Playgroud)

会成为

Product     Quantity
-------     --------
Fruit       2
Fruit       3
Fruit       1
Vegetable   7
Dairy       6
Run Code Online (Sandbox Code Playgroud)

我知道如何执行此操作的唯一方法是在SELECT子句中使用嵌套的REPLACE.

SELECT
  REPLACE('Banana', REPLACE('Orange', REPLACE('Banana', Product, 'Fruit'),
           'Fruit'), 'Fruit') AS Product
FROM
  Table
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法?

编辑:产品类别中可能还有其他值.见上面编辑的例子.

sql t-sql sql-server

12
推荐指数
3
解决办法
4万
查看次数

检查数据库是否处于恢复状态

我正在运行一个删除数据库然后恢复数据库的T-SQL脚本.该脚本针对SQL Server 2008数据库运行.有时备份文件存在问题,数据库卡在恢复状态.

IF EXISTS (SELECT 1 FROM master.dbo.sysdatabases WHERE name = 'dbname')
BEGIN
    ALTER DATABASE [dbname]
    SET SINGLE_USER WITH 
    ROLLBACK IMMEDIATE
END

IF EXISTS (SELECT 1 FROM master.dbo.sysdatabases WHERE name = 'dbname')
BEGIN
    DROP DATABASE [dbname]
END

RESTORE DATABASE [dbname]
FROM  DISK = N'C:\dbname.bak'
WITH  FILE = 1,
NOUNLOAD,
STATS = 10
Run Code Online (Sandbox Code Playgroud)

脚本下次运行时脚本会生成错误消息

ALTER DATABASE is not permitted while a database is in the Restoring state.
Run Code Online (Sandbox Code Playgroud)

在尝试运行ALTER DATABASE命令之前,检查数据库是否处于恢复状态的最佳方法是什么?

编辑:我正在运行的RESTORE DATABASE命令不使用NO RECOVERY选项.

t-sql sql-server

12
推荐指数
1
解决办法
2万
查看次数

使用不同条件从同一个表中的一个SQL查询中的多个聚合函数

我正在创建一个SQL查询,它将根据两个聚合函数的值从表中提取记录.这些聚合函数从同一个表中提取数据,但具有不同的过滤条件.我遇到的问题是SUM的结果比我只包含一个SUM函数要大得多.我知道我可以使用临时表创建此查询,但我只是想知道是否有一个只需要一个查询的优雅解决方案.

我已经创建了一个简化版本来演示这个问题.这是表结构:

EMPLOYEE TABLE

EMPID
1
2
3

ABSENCE TABLE

EMPID   DATE       HOURS_ABSENT
1       6/1/2009   3
1       9/1/2009   1
2       3/1/2010   2
Run Code Online (Sandbox Code Playgroud)

这是查询:

SELECT
    E.EMPID
    ,SUM(ATOTAL.HOURS_ABSENT) AS ABSENT_TOTAL
    ,SUM(AYEAR.HOURS_ABSENT) AS ABSENT_YEAR

FROM
    EMPLOYEE E

    INNER JOIN ABSENCE ATOTAL ON
        ATOTAL.EMPID = E.EMPID

    INNER JOIN ABSENCE AYEAR ON
        AYEAR.EMPID = E.EMPID

WHERE
    AYEAR.DATE > '1/1/2010'

GROUP BY
    E.EMPID

HAVING
    SUM(ATOTAL.HOURS_ABSENT) > 10
    OR SUM(AYEAR.HOURS_ABSENT) > 3
Run Code Online (Sandbox Code Playgroud)

任何见解将不胜感激.

sql t-sql sql-server aggregate-functions

12
推荐指数
2
解决办法
8万
查看次数

Office自动化的DCOM故障

我开发了一个C#程序,它从SQL Server数据库中提取数据,然后生成包含数据的Word文档.我已将程序设置为在Windows Server 2003框上作为SSIS作业的一部分运行.该程序以用户SQLSVC运行,该用户没有管理权限.当我以SQLSVC身份登录并运行程序时,它会正确执行.但是,当程序作为SSIS作业自动运行时,它会冻结在以下代码行中

Microsoft.Office.Interop.Word.Application word =
    new Microsoft.Office.Interop.Word.Application();
Run Code Online (Sandbox Code Playgroud)

当我强行终止进程时,会生成以下错误消息.

Error Message: System.Runtime.InteropServices.COMException (0x80080005):
Retrieving the COM class factory for component
with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80080005.
   at IepGlance.Program.CreateNewIepFiles(Dictionary`2
       iepDictionary, EasyIepDataContext dbContext)
   at IepGlance.Program.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)

据我所知,问题在于DCOM权限.我已经使用dcomcnfg将所有可能的DCOM权限添加到用户SQLSVC,但这没有帮助.还有其他可能的解决方案吗?

c# windows dcom ms-office

5
推荐指数
2
解决办法
2万
查看次数

查找SQL函数的调用者

我想从SQL Server 2005数据库中删除一个SQL函数,但首先我要确保没有人调用它.我已经使用"查看依赖项"功能从数据库中删除对它的任何引用.但是,可能存在使用它的Web应用程序或SSIS包.

我的想法是让函数在每次调用时在审计表中插入一条记录.但是,除非我也知道呼叫者,否则这将是有限的价值.有没有办法确定谁调用了这个函数?

sql t-sql sql-server

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