Questions tagged «sql-server-2000»

使用此标记可以解决特定于Microsoft SQL Server 2000版本的问题。请注意,自2013年4月9日起,Microsoft不再支持此版本的SQL Server,以至于不再创建安全补丁。


28
检查SQL Server中是否存在表
我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论。 当您用Google搜索答案时,会得到很多不同的答案。有官方/后向和向前兼容的方式吗? 这是两种可能的方法。两种方法中的哪一种是标准/最佳方法? 第一种方式: IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='mytablename') SELECT 1 AS res ELSE SELECT 0 AS res; 第二种方式: IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL SELECT 1 AS res ELSE SELECT 0 AS res; MySQL提供的简单 SHOW TABLES LIKE '%tablename%'; 声明。我正在寻找类似的东西。

11
如何加入第一行
我将使用一个具体的但假设的示例。 每个订单通常只有一个订单项: 命令: OrderGUID OrderNumber ========= ============ {FFB2...} STL-7442-1 {3EC6...} MPT-9931-8A LineItems: LineItemGUID Order ID Quantity Description ============ ======== ======== ================================= {098FBE3...} 1 7 prefabulated amulite {1609B09...} 2 32 spurving bearing 但偶尔会有一个订单包含两个订单项: LineItemID Order ID Quantity Description ========== ======== ======== ================================= {A58A1...} 6,784,329 5 pentametric fan {0E9BC...} 6,784,329 5 differential …

19
如何为TSQL Select中的每一行生成随机数?
我表中的每一行都需要一个不同的随机数。以下看似显而易见的代码为每行使用相同的随机值。 SELECT table_name, RAND() magic_number FROM information_schema.tables 我想从中获取整数或浮点数。故事的其余部分是我将使用该随机数创建一个相对于已知日期的随机日期偏移量,例如,相对于开始日期偏移1-14天。 这是用于Microsoft SQL Server 2000。

18
我可以通过转义单引号和用单引号引起来的用户输入来防止SQL注入吗?
我意识到,在构建包含用户输入的查询时,参数化SQL查询是清理用户输入的最佳方式,但是我想知道使用用户输入并转义任何单引号并将整个字符串都用单引号引起的问题是什么。这是代码: sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'" 用户输入的任何单引号都将替换为双单引号,这消除了用户结束字符串的能力,因此他们可能键入的其他任何内容(例如分号,百分号等)都将成为字符串的一部分,并且实际上并未作为命令的一部分执行。 我们使用的是Microsoft SQL Server 2000,我认为单引号是唯一的字符串定界符,也是逃避字符串定界符的唯一方法,因此无法执行用户键入的任何内容。 我没有发现针对此问题发起SQL注入攻击的任何方法,但我意识到,如果这在我看来像防弹一样,那么其他人可能已经想到了,并且这将是普遍的做法。 此代码有什么问题?有没有办法使SQL注入攻击超越这种清理技术?利用此技术的样本用户输入将非常有帮助。 更新: 我仍然不知道有什么方法可以有效地对此代码发起SQL注入攻击。一些人建议反斜杠可以转义一个单引号,而让另一个反引号结束该字符串,以便该字符串的其余部分将作为SQL命令的一部分执行,并且我意识到该方法可以将SQL注入到一个MySQL数据库,但是在SQL Server 2000中,唯一能够逃脱单引号的方法是使用另一个单引号。反斜杠不会这样做。 并且,除非有一种方法可以停止转义单引号,否则将不会执行其余的用户输入,因为所有这些都将被视为一个连续的字符串。 我知道有更好的方法可以清除输入,但是我真的更感兴趣于了解为什么我上面提供的方法行不通。如果有人知道针对此清理方法进行SQL注入攻击的任何特定方式,我很乐意看到它。

21
使用T-SQL查找最后一次出现的子字符串的索引
有没有一种简单的方法可以使用SQL查找字符串最后一次出现的索引?我现在正在使用SQL Server 2000。我基本上需要.NET System.String.LastIndexOf方法提供的功能。稍作谷歌搜索就发现了这个功能 - 检索上一个索引的功能 -但是如果您传递“文本”列表达式则无法使用。只要您要搜索的文本长度为1个字符,其他地方找到的其他解决方案就可以使用。 我可能必须准备一个功能。如果这样做,我会将其发布在这里,以便大家查看并使用。


5
授予用户对数据库中所有存储过程的执行权限?
我从旧数据库生成脚本,创建了新数据库,并从旧数据库导入了所有数据。但是到目前为止,还没有用户对存储过程具有执行权限。我知道我可以用 GRANT EXECUTE ON [storedProcName] TO [userName] 但是,如果仅仅是几个过程,那么我大约有100个,那么对我来说,授予特定用户执行访问权限的最简单方法是什么? 提前致谢。



1
创建表时声明默认约束
我正在通过编写代码而不是使用GUI在Microsoft SQL Server 2000中创建一个新表,我试图学习如何“手动方式”进行操作。 这是我实际使用的代码,它可以正常工作: CREATE TABLE "attachments" ( "attachment_id" INT NOT NULL, "load_date" SMALLDATETIME NOT NULL, "user" VARCHAR(25) NOT NULL, "file_name" VARCHAR(50) NOT NULL, CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"), CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"), CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE()) ) 我已经自行指定了主键,外键和检查约束,因为这样可以为它们定义一个名称,否则内联声明它们将使SQL Server生成一个随机名称,并且我不喜欢它。 当我尝试声明默认值约束时,出现了问题:查看Internet上的信息以及Microsoft SLQ Server …

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.