小编Pon*_*ife的帖子

使用OVER()的"语法不正确"错误

我有一个月的每个交易日的销售预算.因此,对于第1天,预算为300,第2天预算为400,然后月初至今的预算为700.我在查询中收到此错误: Incorrect syntax near 'ROWS'.

select 
TradingDate
,Budget
,sum(Budget) over (PARTITION BY TradingDate
order by TradingDate asc
ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING),1) AS BudgetMTD
from #4
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

9
推荐指数
1
解决办法
5629
查看次数

查询链接服务器上的全局临时表

我已经看到了关于如何在两个不同的SQL服务器上查询两个不同表的所有引用,我理解它是如何实现的.但是,该命令似乎不适用于使用##.创建的临时表.

如果我在一台服务器上编写一个连接,并且它在该服务器上引用一个临时表,在另一台服务器上引用一个临时表,则SQL Server会假定因为##它在命令中,它会自动查看本地服务器tempdb,而不是远程服务器一.我此时也无法使用OPENROWSET,因为该功能已被禁用,我必须获得批准才能重新启用.

所以我的问题是有一种方法可以重新配置这个命令以识别tempdb要查看的内容吗?

SELECT * 
FROM (##mytemptable1 Demog 
INNER JOIN MyServer.tempdb.dbo.##mytemptable2 PeakInfo ON (Demog.SAMPLE_NO = PeakInfo.SampleNum)  AND  (Demog.JOB_NO = PeakInfo.JobNum) )
ORDER BY PeakInfo.JobNum, PeakInfo.SampleNum,   PeakInfo.Replicate ,PeakInfo.Reinjection ,PeakInfo.PeakNameCustSort
Run Code Online (Sandbox Code Playgroud)

sql-server distributed-transactions sql-server-2008

8
推荐指数
2
解决办法
1万
查看次数

sys.dm_database_encryption_keys中的加密状态与sys.databases不一致

如果我查询sys.dm_database_encryption_keys,它回来用encryption_state3(加密)percent_complete0.如果我查询sys.databases,该is_encrypted列的值为0(未加密).这两个似乎对我来说是相互对立的.

数据库是加密的吗? sys.dm_database_encryption_keys这么说,但is_encryptedsys.databases不同意.

在数据库属性下,该属性Encryption Enabled为false.

我糊涂了.

sql-server tde

8
推荐指数
1
解决办法
3万
查看次数

我可以关闭SSMS但是运行存储过程吗?

是否可以在存储过程运行时关闭ms sql server管理工作室,而无需停止存储过程?

sql sql-server stored-procedures

6
推荐指数
1
解决办法
2677
查看次数

调用 CLR 函数时出现 SecurityException 错误

我在 C# 中编写了一个简单的用户定义函数,它获取 IP 地址并针对它返回主机名,代码如下:

public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString getname(String ipAddress)
    {
        System.Data.SqlClient.SqlClientPermission pSql = new SqlClientPermission(System.Security.Permissions.PermissionState.Unrestricted);
        pSql.Assert();

        System.Security.PermissionSet psql1 = new PermissionSet(System.Security.Permissions.PermissionState.Unrestricted);
        psql1.Assert();

        System.Net.DnsPermission psql = new DnsPermission(System.Security.Permissions.PermissionState.Unrestricted);
        psql.Assert();

        System.Security.Permissions.SecurityPermission psql2 = new SecurityPermission(System.Security.Permissions.PermissionState.Unrestricted);
        psql2.Assert();

        IPHostEntry host = Dns.GetHostEntry(ipAddress);
        return new SqlString(host.HostName.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我已经部署了它但是当我尝试在 sql 中调用这个函数时: select dbo.getname('10.10.10.10')

它返回此错误:

Msg 6522, Level 16, State 2, Line 7
A .NET Framework error occurred during execution of user-defined routine or aggregate "getname": 
System.Security.SecurityException: Request for …
Run Code Online (Sandbox Code Playgroud)

sql-server c#-4.0

5
推荐指数
1
解决办法
5736
查看次数

如何设置多个批次中可用的会话变量?

我有一个大型数据库脚本将同一结构的多个数据库迁移到一个目标数据库.此目标数据库更通用,因此可以存储来自不同源数据库的数据.我使用变量来跟踪当前正在迁移的实体,因此我知道要在目标表中插入什么ID.

此时迁移性能非常糟糕.为了能够更好地分析脚本,我想通过在每次表迁移后放置'go'来拆分脚本,但这会破坏变量.有没有办法声明一个可供整个连接/会话访问的变量?就像temp #table一样?

sql t-sql sql-server

5
推荐指数
2
解决办法
5242
查看次数

禁用sp_reset_connection

由于我遇到的一些问题,我正在尝试使用.NET Framework 4中的连接池.使用SQL事件探查器,我可以看到每次从连接池中获取连接时,都会执行存储过程sp_reset_connection.

要摆脱这种重置(我实际上不需要sp_reset_connection).我已经尝试将连接字符串中的连接重置参数设置为false,但这似乎没有任何效果.我在想,也许我误解了Connection reset参数的用途.

我注意到http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx中没有记录Connection reset参数.但它在许多其他地方也有提及,例如http://www.techrepublic.com/article/educate-yourself-about-net-sql-server-connection-string-syntax/6084879.

如果我将Conection Reset标志设置为无效值(例如'hello'),则在打开连接时会出现异常,表明实际使用了连接重置标志.

ADO.NET是否真的关心连接重置标志?

我的代码如下:

  static void Main(string[] args)
  {
     const string connectionString =
        "Data Source=(local);Initial Catalog=MyDatabse;User ID=sa;Password=<removed>;Connection Timeout=5;Pooling=true;Min Pool Size=1; Max Pool Size=1; Enlist=false; Connection Reset=false;";

     var connections = new List<SqlConnection>();
     for (int i = 0; i < 1000000; i++)
     {
        using (var conn = new SqlConnection(connectionString))
        {
           conn.Open();

           SqlCommand command = new SqlCommand("SELECT * FROM DatabaseVersion", conn);
           command.ExecuteNonQuery();

           connections.Add(conn);
        }
     }
  }
Run Code Online (Sandbox Code Playgroud)

.net sql-server ado.net connection-pooling

4
推荐指数
1
解决办法
2485
查看次数

将 HH:MM:SS 字符串转换为分钟数

我有以下查询。

select cast(dateadd(minute, datediff(minute, TimeIn, TimeOut), 0) as time(0) )
Run Code Online (Sandbox Code Playgroud)

我从两列中得到了格式为小时-分钟-秒的结果。我只想要 min 的格式。所以02:47:00会读167

t-sql

4
推荐指数
1
解决办法
3万
查看次数

SQL Server中是否有等效的SQL_CALC_FOUND_ROWS?

我有这个mssql查询:

with RESULT as(select  TITLE, URL, ROW_NUMBER() over (order by URL) as SeqValue from WEBSITE 
select * from RESULT where SeqValue>=20 and SeqValue<=40 
Run Code Online (Sandbox Code Playgroud)

我想知道如果where语句不在那里,这个查询会返回多少记录.我尝试和许多其他方式select count(*) from RESULT尝试,@@ROWCOUNT但没有工作.我需要来自select的TITLE和URL,最后我需要select的总记录.

例如在mysql查询中我有prepareStatement使用SQL_CALC_FOUND_ROWS:

select SQL_CALC_FOUND_ROWS TITLE, URL from WEBSITE limit ?, ?

and after this select i have:

select FOUND_ROWS()
Run Code Online (Sandbox Code Playgroud)

在此示例中,返回值是mysql查询的总记录.总记录与LIMIT相同且没有LIMIT指令.我将数据库从mysql转换为mssql,我有这个问题.请帮我...

mysql t-sql sql-server

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

如何在OPENROWSET(BULK ...)中动态指定文件的路径?

我想将图像插入到Image字段中,最好使用一个存储过程来接受图像的路径.在黑客入侵后我想出了这个;

-- functional
DECLARE @parameters nvarchar(max) = '';
DECLARE @sql_string nvarchar(max) = 
N'UPDATE MyTable
  SET MyImageField = (SELECT BulkColumn 
                      FROM Openrowset(Bulk ''' + @PathToMyImage + ''', Single_Blob) ImageData)
  WHERE MyPrimaryKey = ' + CAST(@PrimaryKey AS NVARCHAR(max));

EXECUTE sp_executesql @sql_string,  @parameters
Run Code Online (Sandbox Code Playgroud)

我这样做是因为当我尝试时;

--Not functional
INSERT INTO MyTable (MyImageField) 
VALUES ((SELECT BulkColumn 
         FROM Openrowset(Bulk @PathToMyImage, Single_Blob) ImageData));
Run Code Online (Sandbox Code Playgroud)

SQL Server抛出一个错误,抱怨Bulk期望一个字符串.我宁愿不必使用sp_executesql来实现可维护性/可读性,还有更好的方法吗?

t-sql sql-server bulkinsert

4
推荐指数
1
解决办法
8949
查看次数