标签: sql-server

检查SQL Server表的更改?

如何在不使用触发器或以任何方式修改数据库结构的情况下监视SQL Server数据库以查找表的更改?我首选的编程环境是.NET和C#.

我希望能够支持任何SQL Server 2000 SP4或更新版本.我的应用程序是另一家公司产品的螺栓式数据可视化.我们的客户群数以千计,因此我不想在每次安装时都要求我们修改第三方供应商的表.

通过"更改表",我的意思是更改表数据,而不是更改表结构.

最终,我希望更改在我的应用程序中触发事件,而不是必须间隔检查更改.


根据我的要求(没有触发器或模式修改,SQL Server 2000和2005),最好的行动方案似乎是BINARY_CHECKSUMT-SQL中使用该函数.我计划实施的方式是这样的:

每隔X秒运行以下查询:

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
Run Code Online (Sandbox Code Playgroud)

并将其与存储值进行比较.如果值已更改,请使用查询逐行遍历表:

SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
Run Code Online (Sandbox Code Playgroud)

并将返回的校验和与存储的值进行比较.

sql sql-server datatable rdbms

137
推荐指数
8
解决办法
6万
查看次数

T-SQL:与字符串连接相反 - 如何将字符串拆分为多个记录

可能重复:
SQL中的拆分字符串

我在SQL中看到了几个与字符串连接相关的问题.我想知道你将如何处理相反的问题:将昏迷分隔的字符串拆分为数据行:

可以说我有桌子:

userTypedTags(userID,commaSeparatedTags) 'one entry per user
tags(tagID,name)
Run Code Online (Sandbox Code Playgroud)

并希望将数据插入表中

userTag(userID,tagID) 'multiple entries per user
Run Code Online (Sandbox Code Playgroud)

灵感来自数据库中没有哪些标签?

编辑

谢谢你的答案,实际上有一个值得接受,但我只能选择一个,而Cade Roux提出的递归解决方案对我来说似乎很干净.它适用于SQL Server 2005及更高版本.

对于早期版本的SQL Server,可以使用miies提供的解决方案.对于使用文本数据类型,wcm answer会很有帮助.再次感谢.

t-sql sql-server sql-server-2005

136
推荐指数
8
解决办法
17万
查看次数

搜索特定值SQL Server的所有表,所有列

我有一个特定的值,比如字符串'comments'.我需要在数据库中找到所有这些实例,因为我需要对格式进行更新以将其更改为(*)注释.

我怎样才能做到这一点?该数据库采用SQL Server 2000格式.

sql-server

136
推荐指数
4
解决办法
45万
查看次数

GRANT EXECUTE到所有存储过程

以下命令是否有效地为用户"MyUser"授予了在数据库中执行所有存储过程的权限?

GRANT EXECUTE TO [MyDomain\MyUser]
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server permissions sql-server-2008

136
推荐指数
3
解决办法
24万
查看次数

SQL Server,将命名实例转换为默认实例?

我需要将SQL Server 2005的命名实例转换为默认实例.

有没有办法在没有重新安装的情况下执行此操作?


问题是,6个开发人员中有2个安装了命名实例.因此,它变成了一个痛苦的变化连接字符串为我们其他4人.我正在寻找阻力最小的路径,让我们重新回到我们的团队标准设置.

每个人都表示这将是一个太麻烦的事情,并且它会占用他们的开发时间.我认为这需要一些时间来解决,为了所有相关人员的最佳利益,我尝试梳理安装的配置应用程序并且没有看到任何内容,所以我认为对内部工作有更多了解的人会在这里.

sql-server named-instance sql-server-2005

135
推荐指数
3
解决办法
9万
查看次数

CTE和SubQuery之间的区别?

从这篇文章如何在以下过程中使用ROW_NUMBER?

有两个版本的答案,其中一个使用a SubQuery,另一个使用a CTE来解决相同的问题.

那么,使用CTE (Common Table Expression)over as 的优点是什么ub-query(因此,查询实际上更具可读性)

使用CTEover sub select 的唯一优点是我可以实际命名子查询.当CTE用作简单(非递归)CTE时,这两者之间是否存在其他差异

sql t-sql sql-server subquery common-table-expression

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

更改表添加列语法

我正在尝试以编程方式将一个标识列添加到表Employees.不确定我的语法错误.

ALTER TABLE Employees
  ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1)

ALTER TABLE Employees ADD CONSTRAINT
    PK_Employees PRIMARY KEY CLUSTERED 
    (
      EmployeeID
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试导出脚本,但SQL Mgmt Studio会对整个Temp Table进行重命名.

更新:我认为它在第一个语句中窒息"关键字'COLUMN'附近的语法不正确."

sql t-sql sql-server ddl

135
推荐指数
3
解决办法
20万
查看次数

SQL Server循环 - 如何循环一组记录

如何循环选择一组记录?

所以说例如我有一些记录,我希望循环并对每条记录做一些事情.这是我的选择的原始版本:

select top 1000 * from dbo.table
where StatusID = 7 
Run Code Online (Sandbox Code Playgroud)

谢谢

sql sql-server

135
推荐指数
6
解决办法
45万
查看次数

SQL Server:是否可以同时插入两个表?

我的数据库包含三个名为Object_Table,Data_Table和的表Link_Table.链接表只包含两列,对象记录的标识和数据记录的标识.

我想复制从数据DATA_TABLE在那里它与一个给定对象的身份,并插入相应的记录到Data_TableLink_Table一个不同的给定对象的身份.

可以通过选择一个表变量并通过为每次迭代执行两次插入来循环来完成此操作.

这是最好的方法吗?

编辑:我想避免循环有两个原因,第一个是我懒惰,循环/临时表需要更多代码,更多代码意味着更多地方犯错误,第二个原因是关注性能.

我可以将所有数据复制到一个插入中,但是如何将链接表链接到每个记录都有新ID的新数据记录?

sql sql-server insert temp-tables

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

如何在WHERE子句中进行区分大小写的搜索(我使用的是SQL Server)?

我想在我的SQL查询中进行区分大小写的搜索.但默认情况下,SQL Server不考虑字符串的大小写.

有关如何在SQL查询中进行区分大小写搜索的任何想法?

sql sql-server

134
推荐指数
7
解决办法
21万
查看次数