我在下面的脚本中遇到以下错误
消息 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) 我有 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。
我最近从 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?
我正在尝试编写一个具有两个参数的存储过程。
我正在使用 TVP,因为有些计算机的显示器数量未知。
我希望我的存储过程获取 中的每个序列号,Monitor_Serial并在我的表中插入一个带有关联的新行ComputerName(正是 foreach 循环在编程中的工作方式)。
我该怎么做?当我做一些研究时,我看到几次提到使用光标,但我不确定这是否是我应该使用的。任何建议将不胜感激。
我已经在我的系统上安装了 Microsoft SQL Server Management Studio 2008。当我第一次尝试打开它时,它在我冲浪时问我“服务器名称”我开始知道我必须在配置管理器-> Sql Services中检查实例名称,但我找不到在配置管理器中运行的任何服务,它都显示“没有要显示的项目”
我试图找出但不能。
我究竟做错了什么?
如果我在存储过程之外运行查询,我会得到结果,但我只会在执行查询后得到列名作为结果 - 即使返回值为 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) 我有 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) 在 SQL Server 2008 中,是否有一些简单的日志记录选择特定表的频率(一小时、一天、一周等)?我有一个大表,可被数十个应用程序和大量网页访问。数据提供者威胁要对可用内容进行重大更改,我需要开始演示访问了多少数据。
我们的组织聘请第三方公司对我们的数据库进行维护。老实说,目前他们充当我们的 DBA,因为我们没有 DBA。
为了进行维护工作,他们使用的是 SA 用户。
有没有办法让他们成为他们可以使用的新用户,在不实际查看数据的情况下执行所有管理操作。因此,他们可以看到所有表和列,但他们将无法看到任何行。
如果我遗漏了什么,请随时启发我,因为我的 DBA 知识相当贫乏。
我有一个 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 ×6
trigger ×2
clustering ×1
dml ×1
failover ×1
index-tuning ×1
ssdt ×1
ssis ×1
ssms ×1
syntax ×1
t-sql ×1
users ×1