标签: sql-server

在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);
    ...
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,我也试过这个:

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 + "%'");
    ... …
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server ado.net sql-like

65
推荐指数
3
解决办法
6万
查看次数

SQLSERVER中的ListAGG

我正在尝试聚合SQLServer中的"STRING"字段.我想在Oracle中找到与LISTAGG相同的功能.

你知道如何做同样的功能或另一种方法吗?

例如,

Field A | Field B
1       |  A
1       |  B
2       |  A
Run Code Online (Sandbox Code Playgroud)

我想这个查询的结果将是

1 | AB
2 | A
Run Code Online (Sandbox Code Playgroud)

sql sql-server aggregate

65
推荐指数
3
解决办法
11万
查看次数

SQL Server中的LDF文件是什么?

SQL Server中的LDF文件是什么?它的目的是什么?

我可以安全地删除吗?或减小其大小,因为有时它比数据库文件mdf大10倍.

sql-server

64
推荐指数
4
解决办法
17万
查看次数

为什么以及何时应该使用SPARSE COLUMN?(SQL SERVER 2008)

在通过SQL SERVER 2008的新功能SPARSE COLUMN的一些教程之后,我发现如果列值为0或null它不占用任何空间但是当有值时,它需要4倍的常规空间(非稀疏)列保持.

如果我的理解是正确的,那么为什么我会在数据库设计时采用这种方法呢?如果我使用它,那么在什么情况下,我呢?

出于好奇,当列被定义为稀疏列时,怎么没有空间得到保留(我的意思是说,内部实现是什么)

提前致谢

sql sql-server database-design sql-server-2008

64
推荐指数
2
解决办法
4万
查看次数

将SQL数据从一个表移动到另一个表

我想知道是否可以将所有数据行从一个表移动到另一个表,这与某个查询匹配?

例如,我需要将所有表行从Table1移动到Table2,其中username ='X'和password ='X',这样它们将不再出现在Table1中.

我正在使用SQL Server 2008 Management Studio.

sql sql-server

64
推荐指数
7
解决办法
17万
查看次数

TransactionScope过早完成

我有一个在TransactionScope中运行的代码块,在这段代码中,我多次调用DB.选择,更新,创建和删除整个色域.当我执行删除操作时,我使用SqlCommand的扩展方法执行它,如果查询死锁,它将自动重新提交查询,因为此查询可能会遇到死锁.

我相信当遇到死锁并且函数尝试重新提交查询时会发生此问题.这是我收到的错误:

与当前连接关联的事务已完成但尚未处理.必须先处理事务,然后才能使用连接执行SQL语句.

这是执行查询的简单代码(下面的所有代码都在使用TransactionScope执行):

using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.App))
{
    sqlCommand.Connection.Open();
    sqlCommand.ExecuteNonQueryWithDeadlockHandling();
}
Run Code Online (Sandbox Code Playgroud)

以下是重新提交死锁查询的扩展方法:

public static class SqlCommandExtender
{
    private const int DEADLOCK_ERROR = 1205;
    private const int MAXIMUM_DEADLOCK_RETRIES = 5;
    private const int SLEEP_INCREMENT = 100;

    public static void ExecuteNonQueryWithDeadlockHandling(this SqlCommand sqlCommand)
    {
        int count = 0;
        SqlException deadlockException = null;

        do
        {
            if (count > 0) Thread.Sleep(count * SLEEP_INCREMENT);
            deadlockException = ExecuteNonQuery(sqlCommand);
            count++;
        }
        while (deadlockException != null && count < MAXIMUM_DEADLOCK_RETRIES);

        if (deadlockException != null) throw deadlockException; …
Run Code Online (Sandbox Code Playgroud)

c# sql-server ado.net deadlock transactionscope

64
推荐指数
6
解决办法
5万
查看次数

我可以在没有DEFAULT值的情况下添加非空列

我可以添加一个我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说:

ALTER TABLE只允许添加可以包含空值的列,或者指定了DEFAULT定义,或者添加的列是标识或时间戳列,或者如果以前的条件都不满足,则表必须为空以允许添加这个专栏.列'test'不能添加到非空表'shiplist'中,因为它不满足这些条件.

如果是,请告诉我语法,如果不,请说明原因.

sql t-sql sql-server sql-server-2005

64
推荐指数
4
解决办法
7万
查看次数

如何使用c#监视SQL Server表更改?

我有多个应用程序访问同一个数据库,如果其中一个应用程序在某个表中更改了任何内容(更新,插入),我需要收到通知.

数据库和应用程序不在同一台服务器中.

c# sql-server monitoring

64
推荐指数
7
解决办法
9万
查看次数

ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效

除非还指定了TOP,OFFSET或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效.

我在尝试执行以下查询时遇到上述错误.任何人都可以看看,告诉我这里我做错了什么?

SELECT 
    * 
FROM (
    SELECT 
        Stockmain.VRNOA, 
        item.description as item_description, 
        party.name as party_name, 
        stockmain.vrdate, 
        stockdetail.qty, 
        stockdetail.rate, 
        stockdetail.amount, 
        ROW_NUMBER() OVER (ORDER BY VRDATE) AS RowNum
    FROM StockMain 
    INNER JOIN StockDetail 
        ON StockMain.stid = StockDetail.stid 
    INNER JOIN party 
        ON party.party_id = stockmain.party_id 
    INNER JOIN item 
        ON item.item_id = stockdetail.item_id 
    WHERE stockmain.etype='purchase' 
    ORDER BY VRDATE DESC
) AS MyDerivedTable
WHERE 
    MyDerivedTable.RowNum BETWEEN 1 and 5   
Run Code Online (Sandbox Code Playgroud)

sql database sql-server sql-server-2012

64
推荐指数
2
解决办法
12万
查看次数

SQL Server:列名无效

我正在修改现有的SQL Server存储过程.我在表中添加了两个新列,并修改了存储过程以便选择这两个列.尽管SQL Server Keeps表中提供了这些列,但却出现此错误:

列名称"INCL_GSTAMOUNT"无效

在此输入图像描述

谁能告诉我这里有什么问题?

sql sql-server stored-procedures sql-server-2008

64
推荐指数
5
解决办法
17万
查看次数