小编mar*_*c_s的帖子

更新索引和统计脚本

我在下面的脚本中遇到以下错误

消息 102,级别 15,状态 1,第 44 行
'?' 附近的语法不正确。

消息 319,级别 15,状态 1,第 47 行
关键字“with”附近的语法不正确。如果此语句是公共表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一条语句必须以分号终止。

任何人都可以帮助解决这个问题,它似乎也没有围绕每个数据库

DECLARE @command    NVARCHAR(MAX)
CREATE TABLE #worktable
(
    [Database]  SYSNAME
    ,SchemaName SYSNAME
    ,ObjectName SYSNAME
    ,StatsName  SYSNAME
    ,ColName    SYSNAME
    --,Command  VARCHAR(500)
)

exec [master].[sys].sp_MSForEachDB @command1="use [?]"
INSERT INTO #worktable 
    SELECT 
        '[?]'                                               AS [Database]
        ,sch.[name]                                     AS [SchemaName]
        --,OBJECT_NAME(o.[object_id],DB_ID(''[?]''))            AS [ObjectName]
        ,o.[Name]                                       AS [ObjectName]
        ,s.name                                             AS [StatsName]
        ,c.name                                             AS [ColName]
        --,''COMMAND''                                      AS [Command]
        FROM sys.stats AS s

    INNER JOIN sys.stats_columns AS sc 
        ON s.object_id = sc.object_id …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql index-tuning

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

用于 SQL Server 2012 的 VS2013 上的 SSDT

我有 Visual Studio 2013 和 SQL Server 2012。从我读到的内容来看,VS2013 的 SSDT 加载项似乎只适用于 SQL Server 2014。对吗?

我已经安装了它,并构建了一个在 Visual Studio 中运行良好的 SSIS 包。但是当我尝试将它导入 SQL Server 时,我得到了一个通用的

0xC0010014 "发生一个或多个错误...当 CPackage::LoadFromXML 失败时会发生这种情况...

我的猜测是DTSXSQL Server 2012 无法读取该格式。

我可以做些什么来使 VS2013 以 SQL Server 2012 格式保存,或者以其他方式将我的包导入 SQL Server?我宁愿不必在这台机器上安装 VS2012,因为我已经有了 2013。

ssis visual-studio ssdt

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

将数据库从 SQL Server 2005 升级到 2012 发现语法错误

我最近从 SQL Server 2005 升级到 2012。但是在验证过程中,发现了一个错误。

某个触发器的编码如下:

CREATE TRIGGER [dbo].[trigger] on [dbo].[foo]
FOR UPDATE, UPDATE
AS
    UPDATE foobar
    SET datetime = GetDate()
    FROM bar
    WHERE foobar.id = bar.id
GO
Run Code Online (Sandbox Code Playgroud)

我可以在 SQL Server 2005 上安全地执行这个(奇怪的)。

但是,在 SQL Server 2012 上,它会引发(我所期望的)语法错误。

语法错误:触发器声明中操作“UPDATE”的重复规范。

为什么这不会在 SQL Server 2005 上引发语法错误?我在这方面的 google-fu 失败了。

为什么这似乎适用于 SQL Server 2005?

trigger sql-server-2005 syntax sql-server-2012

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

带有表值参数的存储过程

我正在尝试编写一个具有两个参数的存储过程。

  1. 计算机名 | 无功字符
  2. Monitor_Serial | 表值参数 (TVP)

我正在使用 TVP,因为有些计算机的显示器数量未知。

我希望我的存储过程获取 中的每个序列号,Monitor_Serial并在我的表中插入一个带有关联的新行ComputerName(正是 foreach 循环在编程中的工作方式)。

我该怎么做?当我做一些研究时,我看到几次提到使用光标,但我不确定这是否是我应该使用的。任何建议将不胜感激。

sql-server stored-procedures

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

SQL Server 配置管理器不显示任何服务

我已经在我的系统上安装了 Microsoft SQL Server Management Studio 2008。当我第一次尝试打开它时,它在我冲浪时问我“服务器名称”我开始知道我必须在配置管理器-> Sql Services中检查实例名称,但我找不到在配置管理器中运行的任何服务,它都显示“没有要显示的项目”

我试图找出但不能。

我究竟做错了什么?

sql-server ssms

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

存储过程不显示结果

如果我在存储过程之外运行查询,我会得到结果,但我只会在执行查询后得到列名作为结果 - 即使返回值为 0。任何帮助将不胜感激。

ALTER PROCEDURE [dbo].[Reconciliation2]
(
    @Param1 int,
    @Param2 int,
    @Param3 varchar,
    @Param4 varchar
)

AS

BEGIN
    SET NOCOUNT ON;

    SELECT 
        T.FY AS [FY],
        T.FY_PERIOD AS [Period],
        CONVERT(DATE, CREATED_DATE) AS [Created Date],
        CONVERT(DATE, TRANS_DATE) AS [Trans Date],
        T.TRAN_DOC_TYPE AS [Doc Type],
        TASK_ID AS [Task],
        T.DOC_NO AS [Doc Number],
        LINE_NO AS [Line],
        SEQNO AS [Seq],
        LINE_DESCRIPTION AS [Description],
        SUBSTRING(ACCT_NO,1,2) + '-' +
           SUBSTRING(ACCT_NO,3,5) + '-' +
           SUBSTRING(ACCT_NO,8,5) + '-' +
           SUBSTRING(ACCT_NO,13,6) + '-' +
           SUBSTRING(ACCT_NO,19,4) + '-' +
           SUBSTRING(ACCT_NO,23,4) …
Run Code Online (Sandbox Code Playgroud)

stored-procedures sql-server-2008-r2

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

SQL Server 插入后触发器不执行操作

我有 2 个插入后触发器和 1 个而不是插入触发器的问题。After Insert 触发器应该执行一些操作,但不会触发这些操作。

当替代触发器触发时,它们的动作 After Triggers 工作正常。

让我解释:

“替代”触发器验证该ID值是否为 Null。如果是,则触发器在表 ( TRADE_APPR) 中执行插入操作,填充IDSQL Server 序列中的值。

当替代触发器执行操作时,插入后触发器也执行它们的操作。

我的而不是插入触发器的代码是这样的:

ALTER TRIGGER [ConfirmMgr].[TG_TRADE_APPR_BER_I] 
ON [ConfirmMgr].TRADE_APPR] 
INSTEAD OF INSERT
AS
   DECLARE
      @user_name            varchar(50),
      @appr_username        varchar(50),
      @appr_id          int,
      @v_id             int,
      @appr_timestamp       datetime
BEGIN 
    SELECT @appr_username = APPR_BY_USERNAME FROM inserted

    IF (@appr_username) IS NULL
    BEGIN
            SELECT @user_name = SUSER_NAME()
            UPDATE tbl SET APPR_BY_USERNAME = UPPER(@user_name)
            FROM ConfirmMgr.TRADE_APPR tbl
            INNER JOIN inserted i ON tbl.ID = i.ID
    END …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server dml sql-server-2012

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

表访问的简单记录

在 SQL Server 2008 中,是否有一些简单的日志记录选择特定表的频率(一小时、一天、一周等)?我有一个大表,可被数十个应用程序和大量网页访问。数据提供者威胁要对可用内容进行重大更改,我需要开始演示访问了多少数据。

sql-server-2008

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

SQL Server 2008:如何向数据库维护用户隐藏数据?

我们的组织聘请第三方公司对我们的数据库进行维护。老实说,目前他们充当我们的 DBA,因为我们没有 DBA。

为了进行维护工作,他们使用的是 SA 用户。

有没有办法让他们成为他们可以使用的新用户,在不实际查看数据的情况下执行所有管理操作。因此,他们可以看到所有表和列,但他们将无法看到任何行。

如果我遗漏了什么,请随时启发我,因为我的 DBA 知识相当贫乏。

database-design sql-server users

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

无法在 SQL Server 2014 中创建、加入或添加副本到可用性组

我有一个 2 节点 FCI 和一个非 FCI 节点上的独立 SQL Server 安装。我一直在自动化 FCI、AG 和 DB 副本的配置/安装,到目前为止,它在我的所有测试中都运行良好。

今天执行时出现以下错误:

USE [master]
GO
CREATE AVAILABILITY GROUP [AGName]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY)
FOR 
REPLICA ON N'Node3\ReadOnly' WITH (ENDPOINT_URL = N'TCP://Node3-blah.blah.com:5022', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(ALLOW_CONNECTIONS = ALL), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)),
    N'Primary/Primary' WITH (ENDPOINT_URL = N'TCP://primary.blah.com:5022', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, SESSION_TIMEOUT = 10, BACKUP_PRIORITY = 50, PRIMARY_ROLE(ALLOW_CONNECTIONS = ALL), SECONDARY_ROLE(ALLOW_CONNECTIONS = NO));
GO
Run Code Online (Sandbox Code Playgroud)

错误:

消息 19405,级别 16,状态 …

sql-server clustering failover availability-groups

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