我正在尝试测试是否存在给定的默认约束.我不想使用sysobjects表,但更标准的INFORMATION_SCHEMA.
我之前用它来检查表和主键约束,但我没有看到任何地方的默认约束.
他们不在吗?(我正在使用MS SQL Server 2000).
编辑:我希望得到约束的名称.
我们正在讨论在我们的代码中使用参数化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
Run Code Online (Sandbox Code Playgroud)
而其他人想要这样做:
string sql = "SELECT * FROM Users WHERE Name=" + SafeDBString(name);
SqlCommand getUser = new SqlCommand(sql, connection);
//... blabla - are we safe now?
Run Code Online (Sandbox Code Playgroud)
SafeDBString函数定义如下:
string SafeDBString(string inputValue)
{
return "'" + inputValue.Replace("'", "''") + "'";
}
Run Code Online (Sandbox Code Playgroud)
现在,只要我们在查询中的所有字符串值上使用SafeDBString,我们就应该是安全的.对?
使用SafeDBString函数有两个原因.首先,它是自石头老化以来完成的方式,其次,由于您看到在数据库上运行的精确查询,因此更容易调试sql语句.
那么.我的问题是使用SafeDBString函数是否真的足以避免sql注入攻击.我一直试图找到破坏这种安全措施的代码示例,但我找不到任何示例.
那里有人可以打破这个吗?你会怎么做?
编辑: 总结到目前为止的答复:
是否可以在TSQL中解析JSON?我不是要创建一个JSON字符串,我的意思是解析作为参数传入的json字符串.
我试图在不丢失数据的情况下删除sql server 2008中的非空约束.
在MySQL中,您可以使用语法
DELETE t1,t2
FROM table1 AS t1
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...
Run Code Online (Sandbox Code Playgroud)
我如何在SQL Server中执行相同的操作?
在SQL Server 2008中,我希望将datetime列四舍五入到最接近的小时和最近的分钟,最好是2008年的现有函数.
对于此列值2007-09-22 15:07:38.850,输出将如下所示:
2007-09-22 15:08 -- nearest minute
2007-09-22 15 -- nearest hour
Run Code Online (Sandbox Code Playgroud) 有人能解释一下TSQL中的COALESCE功能是如何工作的吗?语法如下
COALESCE(x,y)
关于此功能的MSDN文档非常模糊
当我右键单击表中的索引文件夹时,"新索引"菜单项显示为灰色.我不明白为什么.为了防万一,我删除了表中的所有数据,并刷新并重新启动了SSMS,但没有运气.我正在使用SQL Server 2012 Business Intelligence SP1 CTP.
sql-server ssms sql-server-2008 sql-server-2012 sql-server-2014
我想删除一个表但收到以下消息:
消息3726,级别16,状态1,行3
无法删除对象'dbo.UserProfile',因为它由FOREIGN KEY约束引用.
消息2714,级别16,状态6,行2
数据库中已存在名为"UserProfile"的对象.
我浏览了SQL Server Management Studio但我无法找到约束.如何找出外键约束?