谁能解释xp_Delete_file
sql server 中的参数列表.我找不到此存储过程的msdn文档.
我从维护计划获得了xp_Delete_file的脚本但是没有理解第一个参数.
sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014
我是一个sql初学者,知道如何在经度和纬度坐标中获取我的用户位置.我的目标是最终能够从myTable中选择距离小于2km的所有行.然而,在我实现这一目标的过程中,有些事情让我困惑,所以我会尝试列出我无法理解的内容.
我如何使用经度和纬度在地理列中存储位置?(因为它应该只是一个地理点而不是两个权利?不是一个经度而一个是纬度?)
现在我已经获得了地理点,我如何选择特定距离内的所有行(在我的情况下为2km)?
我已经看到了一些类似的问题,但是解决它们的预先理解的数量超出了我的sql知识,因为我是一个绝对的初学者,这可以轻松完成,任何人都知道如何?
我最近将我们的SQL Server从2005升级到2014年(链接服务器),我注意到调用exec命令执行升级后的链接服务器上的存储过程的存储过程之一失败并出现错误
无法在sys.servers.Verify中找到指定了正确服务器名称的服务器"服务器名称".如有必要,执行存储过程sp_addlinkedserver以将服务器添加到sys.servers.
问题是链接服务器存在,我已经完成测试,以确保我可以从链接服务器查询表.以下是我检查链接服务器是否配置正确的检查.
- select name from sys.servers -- > Lists the linked server
- select top 10 * from linkedserver.database.dbo.table --> Gets top 10 records
- exec linkedserver.database.dbo.storedproc --> Executes the stored procedure (I created a test stored procedure on the linked server and I can execute it)
Run Code Online (Sandbox Code Playgroud)
然而,失败的错误是在下面
exec linkedserver.database.dbo.failing_storedprocedure @id,'load ','v2',@file_name, @list_id = @listid output;
Run Code Online (Sandbox Code Playgroud)
我重新创建了链接服务器并启用了RPC.我已经为存储过程授予了执行权限.我可以在链接服务器上选择记录并执行其他存储过程,但上面的exec失败(它在升级之前有效).SQL Server 2005和SQL Server 2014之间是否存在导致此失败的语法差异?
sql sql-server stored-procedures linked-server sql-server-2014
我有一个很长的存储过程,它以下面的语句开头:
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
Run Code Online (Sandbox Code Playgroud)
如果它不存在,它应该在我的本地服务器上创建数据库.问题是几乎所有的时间它都存在于存储过程的这一部分而不创建它,然后它会干扰同一过程中的其他代码.另一方面,在极少数情况下,它会创建数据库.我的问题是:有没有更好的方法来检查数据库是否存在,因为我已经尝试过至少10个.
我试过的其他方法:
IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
IF NOT EXISTS (SELECT name FROM master.dbo.sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
Run Code Online (Sandbox Code Playgroud)
但是如果我在我的sp之外运行它,它可以很好地工作,这让我觉得它可能是与权限相关的一些问题.
我正在处理一些当前以1分钟为间隔存储的数据,如下所示:
CREATE TABLE #MinuteData
(
[Id] INT ,
[MinuteBar] DATETIME ,
[Open] NUMERIC(12, 6) ,
[High] NUMERIC(12, 6) ,
[Low] NUMERIC(12, 6) ,
[Close] NUMERIC(12, 6)
);
INSERT INTO #MinuteData
( [Id], [MinuteBar], [Open], [High], [Low], [Close] )
VALUES ( 1, '2015-01-01 17:00:00', 1.557870, 1.557880, 1.557870, 1.557880 ),
( 2, '2015-01-01 17:01:00', 1.557900, 1.557900, 1.557880, 1.557880 ),
( 3, '2015-01-01 17:02:00', 1.557960, 1.558070, 1.557960, 1.558040 ),
( 4, '2015-01-01 17:03:00', 1.558080, 1.558100, 1.558040, 1.558050 ),
( 5, '2015-01-01 17:04:00', 1.558050, …
Run Code Online (Sandbox Code Playgroud) sql-server group-by aggregate-functions analytic-functions sql-server-2014
我正在使用MS SQL Server 2014并有一个包含3列的表,字段数据类型是Decimal(38,0)
.
我想更新我的表的每一行,在前两位数后面插入一个小数点.例如,我想123456
成为12.3456
.数字是不同的长度; 有些是5位数,有些是7位数,等等.
我的表是:
+-------------+-------+-------+
| ID | X | Y |
+-------------+-------+-------+
| 1200 | 321121| 345000|
| 1201 | 564777| 4145 |
| 1202 | 4567 | 121444|
| 1203 | 12747 | 789887|
| 1204 | 489899| 124778|
+-------------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
我想把它改成:
+-------------+--------+--------+
| ID | X | Y |
+-------------+--------+--------+
| 1200 | 32.1121| 34.5000|
| 1201 | 56.4777| 41.45 |
| 1202 | 45.67 | 12.1444|
| 1203 …
Run Code Online (Sandbox Code Playgroud) 我首先在PhpMyAdmin中创建了数据库的结构,并将其导出到.sql文件中.现在我在SQL Server Management Studio中随处可见,我可以在新数据库中导入/添加数据.
有人在哪里看或点击什么?我正在使用2014版(CTP2)
我目前正在编写一个SSIS包,它通过OLE DB Source从存储过程中检索数据.存储过程包含一个相当讨厌的查询,我已经能够使用临时表来改进.如果我将这些临时表切换到表变量,逻辑读取数据会从大约130万跳到大约5600万.我对130万用户感到不舒服,但我无法满足于5600万次逻辑读取.因此,我无法真正将临时表转换为表变量.
但是,SSIS(或更确切地说SQL Server)无法解析此查询的元数据,因此程序包将无法运行.我在网上找到了一些不同的解决方案,但它们似乎都不适用于SQL Server 2008和SQL Server 2014.我们目前正在将所有服务器升级到2014年,而这个特定的软件包在2008年开始运行DEV,2014年在QA,2008年在生产.到秋季,PROD层将是2014年,DEV层将在此后的某个时间推广.不幸的是,我不能等到这些升级发生这个SSIS包.数据需要在下周开始移动.因此,我需要找到一种方法来解决两种环境的元数据问题.这是我到目前为止所尝试的:
在IF 1=0
块中添加虚拟选择,返回正确的元数据.这适用于2008年,但不是2014年.
SET FMTONLY OFF
在存储过程的开头使用.这适用于2008年,但不适用于2014年.此外,它会导致存储过程为每个返回的列运行一次(在这种情况下超过30),即使它确实有效,这也是一个交易破坏者.
使用EXEC ... WITH RESULT SETS (( ... ));
.这适用于2014年,但不是在2008年.
部署存储过程,该存储过程返回正确的元数据,构建和部署SSIS包,然后将存储过程修改为正确的版本.这似乎在两种环境中都不起作用,这会使我们的ETL框架中开发的任何其他ETL应用程序复杂化.
如果我无法解决任何问题,我可以将不同的存储过程和包部署到不同的层,但我更倾向于此.首先,这会使未来版本复杂化,我还需要确保在升级服务器后不要忘记更新存储过程和包.
我也可以在数据库中创建真正的表来取代这些临时表.我真的不喜欢这个解决方案,但这是我能够容忍的.如果我最终这样做,我可能会转而使用它WITH RESULT SETS
.
但是,我个人并不关心这些解决方案中的任何一个,所以我想知道是否有任何我错过的解决方法可能会更好一些.
使用sqlpackage.exe发布dacpac时,它首先运行Schema Compare,然后运行预部署脚本.例如,当您需要删除表或重命名列时,这会导致问题.架构比较是在修改对象和部署失败之前完成的.必须重复发布才能考虑新模式.
任何人都有一个解决方案,不涉及两次发布?
sql-server msdeploy visual-studio-2013 sql-server-2014 sql-server-data-tools
我试图在SQL Server中附加数据库文件.我收到以下错误.我尝试从Visual Studio附加数据库时遇到的同样的错误.我正在使用Visual Studio 2013和SQL Server 2014 Management Studio.
我的连接字符串:
<add name="Sample"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\M\Desktop\SampleApplication1\App_Data\Sample.mdf;Initial Catalog=SampleDBContext;Integrated Security=True;"
providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)
错误:
无法打开数据库'sample',因为它是版本851.此服务器支持版本782及更早版本.不支持降级路径.无法打开新数据库'Sample'.CREATE DATABASE被中止.
这是在Visual Studio中设置的默认SQL Server实例.