Questions tagged «sql-server»

Microsoft SQL Server是一个关系数据库管理系统(RDBMS)。将此标签用于所有SQL Server版本,包括Compact,Express,Azure,Fast-track,APS(以前称为PDW)和Azure SQL DW。请勿将此标签用于其他类型的DBMS(MySQL,PostgreSQL,Oracle等)。除非该标签与数据库直接相关,否则请勿将其用于软件和移动开发问题。

9
如何在SQL Developer中执行SQL Server存储过程?
我已经获得一个SQL Server数据库用户帐户,该数据库仅具有执行存储过程的特权。我将JTDS SQL Server JDBC jar文件添加到SQL Developer,并将其添加为第三方JDBC驱动程序。我可以成功登录到SQL Server数据库。运行该过程的语法如下: EXEC proc_name 'paramValue1' 'paramValue2' 当我将其作为语句或脚本运行时,出现以下错误: Error starting at line 1 in command: EXEC proc_name 'paramValue1' 'paramValue2' Error report: Incorrect syntax near the keyword 'BEGIN'. 我尝试将语句包装在中BEGIN/END,但得到相同的错误。是否可以从SQL Developer调用该过程?如果是这样,我需要使用什么语法?


30
附加数据库时访问被拒绝
我正在使用SQL Server 2008开发人员版。我试图附加AdventureWorks2008数据库。 尝试附加时,收到“访问被拒绝”错误。根据事件日志,它来自操作系统: 打开失败:无法打开文件编号0的文件D:\ ProjectData \ AdventureWorks \ AdventureWorksLT2008_Data.mdf。OS错误:5(访问被拒绝。)。 我以为是“ NTFS问题”,但是系统(和我)可以修改对这两个文件的访问权限。 我发现如果以sa身份登录,可以成功附加数据库,但是我的用户帐户无法使用。 我是计算机上的本地管理员组的成员,并且在SQL Server实例中担任sysadmins角色。 知道为什么我必须以sa身份登录吗?

9
如何从SQL Server用户定义的函数报告错误
我在SQL Server 2008中编写一个用户定义的函数。我知道这些函数不能以通常的方式引发错误-如果尝试包括RAISERROR语句,则SQL返回: Msg 443, Level 16, State 14, Procedure ..., Line ... Invalid use of a side-effecting operator 'RAISERROR' within a function. 但是事实是,该函数接受了一些输入,这可能是无效的,如果是,则该函数没有返回任何有意义的值。那我该怎么办? 我当然可以返回NULL,但是对于使用该函数进行故障排除的任何开发人员而言,这都是困难的。我还可能导致被零除或类似的结果-这将生成错误消息,但会产生误导。有什么办法可以以某种方式报告自己的错误消息?

18
为什么NULL = NULL在SQL Server中评估为false
在SQL Server中,如果 nullParam=NULL在where子句中,则其总值为false。这是违反直觉的,并导致了我很多错误。我确实了解IS NULL和IS NOT NULL关键字是正确的方法。但是,为什么SQL Server会表现这种方式?
146 sql  sql-server  null 


5
选择唯一和选择不同之间的区别
我以为它们是同义词,但是我在Microsoft SQL中写了以下内容: Select Unique col from (select col from table1 union select col from table2) alias 它失败了。更改为 Select Distinct col from (select col from table1 union select col from table2) alias 解决它。有人可以解释吗?
145 sql  sql-server 

6
接受多个Id值的T-SQL存储过程
是否有一种优美的方法来处理将ID列表作为参数传递给存储过程? 例如,我希望存储过程返回部门1、2、5、7、20。过去,我像下面的代码一样传入了以逗号分隔的ID列表,但这样做实在是太脏了。 我认为SQL Server 2005是我唯一适用的限制。 create procedure getDepartments @DepartmentIds varchar(max) as declare @Sql varchar(max) select @Sql = 'select [Name] from Department where DepartmentId in (' + @DepartmentIds + ')' exec(@Sql)

12
MySQL和SQL Server之间的差异
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我是一位ASP.NET开发人员,已经Microsoft SQL Server满足了我的所有数据库需求(无论是在工作中还是在个人项目中)。 我正在考虑为我的一些个人项目尝试使用LAMP堆栈。 MySQL和之间的主要区别是SQL Server什么?使用存储过程是一种常见的做法MySQL吗? 您是否有任何建议或资源可以帮助我进行转换? 对于两者都有经验的人,有没有缺少的功能MySQL?
144 mysql  sql-server  tsql 

8
使用查询将数据插入临时表
我有一个输出当前数据的现有查询,我想将其插入到Temp表中,但是这样做有一些问题。有人会对如何执行此操作有一些见解吗? 这是一个例子 SELECT * FROM (SELECT Received, Total, Answer, ( CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END ) AS application FROM FirstTable WHERE Recieved = 1 AND application = 'MORESTUFF' GROUP BY CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) data WHERE application LIKE isNull('%MORESTUFF%', '%') 这似乎当前以我需要的方式输出我的数据,但我想将其传递到临时表中。我的问题是我对SQL查询还很陌生,还无法找到一种方法。或者,即使有可能。如果不可能,是否有更好的方法将我要查找的数据获取WHERE application LIKE …
144 sql  sql-server  ssms 

11
SQL Server:是否可以同时插入两个表?
我的数据库包含三个表叫Object_Table,Data_Table和Link_Table。链接表仅包含两列,即对象记录的标识和数据记录的标识。 我想从DATA_TABLE链接到一个给定对象标识的位置复制数据,Data_Table并Link_Table在不同的给定对象标识中插入相应的记录。 我可以通过选择一个表变量并为每次迭代进行两次插入来循环执行此操作。 这是最好的方法吗? 编辑:我想避免循环的原因有两个,第一个是我很懒,并且循环/临时表需要更多的代码,更多的代码意味着更多的地方出错了,第二个原因是对性能的关注。 我可以在一个插入中复制所有数据,但是如何获得链接表以链接到新数据记录,其中每个记录都有一个新ID?

9
CTE和SubQuery之间的区别?
来自这篇文章如何在以下过程中使用ROW_NUMBER? 答案有两种版本,一种使用a sub-query,另一种使用a CTE来解决相同的问题。 现在,使用CTE (Common Table Expression)“子查询”而不是“子查询”有什么好处(因此,查询的实际可读性更高) 使用的唯一的优点CTE了sub-select,是我可以实际命名的sub-query。当将CTE用作简单(非递归)CTE时,这两者之间还有其他区别吗?

13
如何在SQL Server中一次更改多个列
我需要ALTER表中几列的数据类型。 对于单列,以下工作正常: ALTER TABLE tblcommodityOHLC ALTER COLUMN CC_CommodityContractID NUMERIC(18,0) 但是,如何在一个语句中更改多个列?以下内容不起作用: ALTER TABLE tblcommodityOHLC ALTER COLUMN CC_CommodityContractID NUMERIC(18,0), CM_CommodityID NUMERIC(18,0)

11
确定记录是否存在的最快方法
就像标题所暗示的那样……我正在尝试以最少的开销找出最快的方法来确定表中是否存在记录。 查询样例: SELECT COUNT(*) FROM products WHERE products.id = ?; vs SELECT COUNT(products.id) FROM products WHERE products.id = ?; vs SELECT products.id FROM products WHERE products.id = ?; 假设?交换为'TB100'...,第一个查询和第二个查询都将返回完全相同的结果(例如1,此对话...)。最后一个查询将按'TB100'预期返回;如果id表中不存在,则不。 目的是弄清楚是否id在表中。如果不是,则程序将接下来插入记录,如果是,则程序将跳过该记录或基于此问题范围之外的其他程序逻辑执行UPDATE查询。 哪个更快,开销更少?(这将在每个程序运行中重复数万次,并且一天将运行多次)。 (通过提供的M $ JDBC驱动程序从Java对M $ SQL Server运行此查询)

8
检查对SQL Server表的更改?
如何在不使用触发器或不以任何方式修改数据库结构的情况下监视SQL Server数据库中对表的更改?我首选的编程环境是.NET和C#。 我希望能够支持任何SQL Server 2000 SP4或更高版本。我的应用程序是另一家公司产品的附加数据可视化。我们的客户群有成千上万,因此我不想在每次安装时都提出修改第三方供应商表的要求。 通过“改变到餐桌”我平均变化表数据,而不是更改为表结构。 最终,我希望更改能够触发我的应用程序中的事件,而不是必须间隔检查更改。 根据我的要求(不进行触发器或架构修改,SQL Server 2000和2005),最好的操作方案似乎是BINARY_CHECKSUM在T-SQL中使用该函数。我计划实现的方式是这样的: 每X秒运行以下查询: SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK); 并将其与储值进行比较。如果值已更改,请使用查询逐行浏览表: SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK); 并将返回的校验和与存储的值进行比较。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.