Questions tagged «sql-server»

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


7
SQL Server中存储过程的上次运行日期
我们开始在我们的应用程序中获得很多存储过程。其中许多用于自定义报告,其中许多不再使用。有谁知道我们可以在SQL Server 2005的系统视图上运行的查询,该查询可以告诉我们存储过程的最后执行日期?
76 sql-server 


9
什么时候最好将标志存储为位掩码而不是使用关联表?
我正在开发一个应用程序,其中用户具有使用不同功能(例如读取,创建,下载,打印,批准等)的不同权限。权限列表不会经常更改。我有几个关于如何在数据库中存储这些权限的选项。 在什么情况下,选择2会更好? 选项1 使用关联表。 用户 ---- 用户名(PK) 名称 部 允许 ---- PermissionId(PK) 名称 用户权限 ---- 用户ID(FK) PermissionId(FK) 选项2 为每个用户存储一个位掩码。 用户 ---- 用户名(PK) 名称 部 权限 [Flags] enum Permissions { Read = 1, Create = 2, Download = 4, Print = 8, Approve = 16 }

5
存储过程中可以有一个可选的OUTPUT参数吗?
我有一个具有一堆输入和输出参数的存储过程,因为它正在向多个表中插入值。在某些情况下,存储的proc仅插入到一个表中(取决于输入参数)。这是一个模拟的场景来说明。 表/数据对象: 人 Id Name Address 名称 Id FirstName LastName 地址 Id Country City 说我有一个插入人的存储过程。如果该地址不存在,则不会将其添加到Address数据库的表中。 因此,当我生成代码以调用存储过程时,我不想添加任何Address参数。对于INPUT参数,这是可以的,因为SQL Server允许我提供默认值。但是对于OUTPUT参数我该在存储过程中做什么使其使其可选,所以我不会收到错误... 过程或函数“ Person_InsertPerson”需要未提供的参数“ @AddressId”。


8
如何在SQL Server中使用RANK()
我RANK()在SQL Server中使用时遇到问题。 这是我的代码: SELECT contendernum, totals, RANK() OVER (PARTITION BY ContenderNum ORDER BY totals ASC) AS xRank FROM ( SELECT ContenderNum, SUM(Criteria1+Criteria2+Criteria3+Criteria4) AS totals FROM Cat1GroupImpersonation GROUP BY ContenderNum ) AS a 该查询的结果是: contendernum totals xRank 1 196 1 2 181 1 3 192 1 4 181 1 5 179 …
76 sql-server  tsql 

4
SQL Server:批处理语句(即使用“ GO”)有什么好处?
我知道在SQL Server中GO 被视为批处理分隔符。 我的问题是:拥有批处理分离器有什么意义?它给您带来什么好处?为什么要使用它? 示例:我经常看到它在SQL代码中的用法如下,但我看不出为什么将其视为最佳实践。据我所知,如果没有所有GO语句,代码将是相同的: USE AdventureWorks2012; GO BEGIN TRANSACTION; GO IF @@TRANCOUNT = 0 BEGIN SELECT FirstName, MiddleName FROM Person.Person WHERE LastName = 'Adams'; ROLLBACK TRANSACTION; PRINT N'Rolling back the transaction two times would cause an error.'; END; ROLLBACK TRANSACTION; PRINT N'Rolled back the transaction.'; GO (来源:technet文档):
76 sql-server  tsql 


13
SQL Server-布尔文字?
如何在SQL Server中写入文字布尔值?查看示例用法: select * from SomeTable where PSEUDO_TRUE 另一个样本: if PSEUDO_TRUE begin select 'Hello, SQL!' end 注意:上面的查询与我将如何使用它无关。这只是测试文字布尔值。


4
SQLParameter如何防止SQL注入?
究竟是什么在后台发生,使得SQLParameter阻止.NET参数化查询中的SQL Inection攻击?它只是剥离任何可疑角色还是还有其他功能? 有没有人检查过当您传递恶意输入时SQL Server的真正含义? 相关:您可以在SQL FROM语句中使用SQLParameter吗?


9
数据库设计:计算帐户余额
如何设计数据库以计算帐户余额? 1)目前,我从交易表中计算帐户余额。在我的交易表中,我有“说明”和“金额”等。 然后,我将所有“金额”值相加,得出用户的帐户余额。 我向我的朋友展示了这个,他说这不是一个好的解决方案,当我的数据库增长缓慢时?他说我应该创建一个单独的表来存储计算出的帐户余额。如果这样做,我将不得不维护两个表,这很冒险,帐户余额表可能会不同步。 有什么建议吗? 编辑:选项2:我应该在我的交易表“余额”中添加一个额外的列。现在,我不需要遍历很多数据来执行计算。 示例John购买了$ 100的信用额,他负债了$ 60,然后又增加了$ 200的信用额。 金额$ 100,余额$ 100。 金额-$ 60,余额$ 40。 金额$ 200,余额$ 240。

4
在SQL LIKE子句中使用SqlParameter不起作用
我有以下代码: const string Sql = @"select distinct [name] from tblCustomers left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');"; using (var command = new SqlCommand(Sql, Connection)) { command.Parameters.AddWithValue("@SEARCH", searchString); ... } 这行不通,我也尝试这样做: const string Sql = @"select distinct [name] from tblCustomers left outer …

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.