Questions tagged «sql-server»

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



21
避免不带参数的SQL注入
在这里,我们正在讨论在代码中使用参数化的sql查询的另一种讨论。在讨论中,我们有两个方面:我和其他一些人说我们应该始终使用参数来防止sql注入,而其他人则认为不需要。相反,他们希望在所有字符串中用两个撇号替换单个撇号,以避免sql注入。我们的数据库都运行Sql Server 2005或2008,我们的代码库在.NET Framework 2.0上运行。 让我给您一个简单的C#示例: 我希望我们使用这个: string sql = "SELECT * FROM Users WHERE Name=@name"; SqlCommand getUser = new SqlCommand(sql, connection); getUser.Parameters.AddWithValue("@name", userName); //... blabla - do something here, this is safe 其他人想这样做时: string sql = "SELECT * FROM Users WHERE Name=" + SafeDBString(name); SqlCommand getUser = new SqlCommand(sql, …

4
SQL Server CTE和递归示例
我从不使用CTE进行递归。我只是在读一篇有关它的文章。本文通过Sql Server CTE和递归显示员工信息。它基本上显示了员工及其经理的信息。我无法理解此查询的工作方式。这是查询: WITH cteReports (EmpID, FirstName, LastName, MgrID, EmpLevel) AS ( SELECT EmployeeID, FirstName, LastName, ManagerID, 1 FROM Employees WHERE ManagerID IS NULL UNION ALL SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID, r.EmpLevel + 1 FROM Employees e INNER JOIN cteReports r ON e.ManagerID = r.EmpID ) SELECT FirstName + ' …

8
在SQL Server中避免在INSERT INTO SELECT查询中重复
我有以下两个表: Table1 ---------- ID Name 1 A 2 B 3 C Table2 ---------- ID Name 1 Z 我需要从数据插入Table1到Table2。我可以使用以下语法: INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1 但是,在我的情况下,可能存在重复的ID Table2(在我的情况下,它只是“ 1”),我不想再次复制该ID ,因为这会引发错误。 我可以这样写: IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1) INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 …


10
LEN函数不包括SQL Server中的尾随空格
我在SQL Server 2005中具有以下测试表: CREATE TABLE [dbo].[TestTable] ( [ID] [int] NOT NULL, [TestField] [varchar](100) NOT NULL ) 填充: INSERT INTO TestTable (ID, TestField) VALUES (1, 'A value'); -- Len = 7 INSERT INTO TestTable (ID, TestField) VALUES (2, 'Another value '); -- Len = 13 + 6 spaces 当我尝试使用SQL Server LEN()函数查找TestField的长度时,它不计算尾随空格-例如: …
109 sql-server 

11
SQL Server:仅选择具有MAX(DATE)的行
我有一个数据表(数据库是MSSQL): ID OrderNO PartCode Quantity DateEntered 417 2144 44917 100 18-08-11 418 7235 11762 5 18-08-11 419 9999 60657 100 18-08-11 420 9999 60657 90 19-08-11 我想查询一个返回OrderNO,PartCode和Quantity的查询,但仅返回最后一次注册的订单。 我想从示例表中获取以下信息: OrderNO PartCode Quantity 2144 44917 100 7235 11762 5 9999 60657 90 请注意,订单9999只返回了一行。 谢谢!
109 sql-server 

4
如何在列上创建唯一约束(SQL Server 2008 R2)?
我有SQL Server 2008 R2,我想设置一个唯一列。 似乎有两种方法可以做到这一点:“唯一索引”和“唯一约束”。尽管大多数人建议使用唯一性约束,但它们与我了解的差别不大,因为您也会自动获得索引。 如何创建唯一约束? ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name) 是否可以通过SQL Server Management Studio创建唯一约束?

13
数据库的事务日志已满
我有一个运行时间很长的过程,可以在整个过程中保持打开事务。 我无法控制它的执行方式。 由于事务在整个持续时间内保持打开状态,因此当事务日志填满时,SQL Server无法增加日志文件的大小。 因此,该过程因错误而失败"The transaction log for database 'xxx' is full"。 我试图通过增加数据库属性中事务日志文件的大小来防止这种情况,但是却出现了相同的错误。 不知道下一步该怎么做。该过程运行了几个小时,因此反复试验并不容易。 有任何想法吗? 如果有人感兴趣,该过程就是组织导入 Microsoft Dynamics CRM 4.0. 有足够的磁盘空间,我们在简单的日志记录模式下保存了日志,并且在启动该过程之前已经备份了日志。 -=-=-=-=-更新-=-=-=-=- 到目前为止,感谢所有评论。以下是使我相信由于打开的事务日志不会增长的原因: 我收到以下错误... Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception: System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be …

4
如何在SQL Server中将Active Directory用户组添加为登录名
我有一个.net应用程序,该应用程序使用Windows身份验证连接到SQL Server。 我们无法在应用程序中使用SQL Server身份验证。我们的项目中有很多Active Directory用户。因此,我们必须为SQL Server中的每个Active Directory用户创建一个单独的登录帐户,而不是为每个AD用户创建一个单独的登录帐户,是否可以使用SQL Server中的Active Directory用户组?

17
如何使用Print Statement打印VARCHAR(MAX)?
我有一个代码是: DECLARE @Script VARCHAR(MAX) SELECT @Script = definition FROM manged.sys.all_sql_modules sq where sq.object_id = (SELECT object_id from managed.sys.objects Where type = 'P' and Name = 'usp_gen_data') Declare @Pos int SELECT @pos=CHARINDEX(CHAR(13)+CHAR(10),@script,7500) PRINT SUBSTRING(@Script,1,@Pos) PRINT SUBSTRING(@script,@pos,8000) 脚本的长度大约为10,000个字符,并且由于我使用的print语句最多只能容纳8000个字符。因此,我使用的是两个print语句。 问题是当我有一个脚本(例如18000个字符)时,我曾经使用3条打印语句。 那么,有没有一种方法可以根据脚本的长度来设置打印语句的数量?




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.