我不是第一个注意到缺少此功能的人。
但我想知道是否有一些有用的解决方法。我想在同一个文件夹中部署一个主脚本和一些依赖脚本。
顺便说一句,Microsoft Connect 上有票吗?
编辑:
锁定于此,似乎等同于在 sqlcmd 模式下运行的脚本是否可以确定其在文件系统中的路径的问题。
第二次编辑:
从SO我找到了一种将脚本路径传递到 sqlcmd 的方法
sqlcmd -S myServer -d myDB -U user -P password -i file1.sql -v p1="D:\myscripts"
Run Code Online (Sandbox Code Playgroud)
我可以验证它是否传递给 File1.sql
PRINT '$(p1)'
:setvar path1 $(p1) + '\file1.sql'
:r $(path1)
Run Code Online (Sandbox Code Playgroud)
但是我没有找到在第二行中连接路径和文件名的正确方法。
第三次编辑: 我在这里找到了连接路径和文件名的解决方案。
PRINT '$(p1)'
:r $(p1)\file1.sql
Run Code Online (Sandbox Code Playgroud)
还有更好的方法吗?
我有两张桌子
[LocatioNo],[LocationName],[Description]
)[LocationNo],[LocationCode],[DDate],[BillNo],[Model],[Quantity],[SNo]
)
(来源:staticflickr.com)
](http://www.flickr.com/photos/77377790@N08/6782618850 “点击查看Flickr”)
以及涉及在 SQL Server 2000 中创建的 2 个表的视图
CREATE VIEW [dbo].[QueryLocation]
AS
SELECT TOP (100) PERCENT
dbo.LocationData.LocationNo, dbo.LocationData.LocationCode,
dbo.LocationData.DDate, dbo.LocationData.BillNo,
dbo.LocationData.Model,
SUM(dbo.LocationData.Quantity) AS Quantity,
dbo.LocationMaster.LocationName
FROM
dbo.LocationData
INNER JOIN
dbo.LocationMaster ON dbo.LocationData.LocationNo = dbo.LocationMaster.LocatioNo
GROUP BY
dbo.LocationMaster.LocationName, dbo.LocationData.LocationNo,
dbo.LocationData.LocationCode, dbo.LocationData.DDate, dbo.LocationData.BillNo,
dbo.LocationData.Model ORDER BY dbo.LocationData.BillNo
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 2000 中执行以下查询时,网格中的结果按billno
列排序。
SELECT * FROM QueryLocation
Run Code Online (Sandbox Code Playgroud)
(来源:staticflickr.com)
](http://www.flickr.com/photos/77377790@N08/6782618858 “点击查看 Flickr”)
升级到 SQL Server …
--- 更新 ---
感谢您的评论和到目前为止的帮助。我很抱歉没有进一步说明问题。我已经更新了下面的问题。
- - 更新 - -
目前,我被要求为大量数据开发数据库结构。我正在争论实现图形数据库而不是“普通”关系数据库,并且想知道如果数据不一定包含任何关系有什么缺点?可以像表/表中的行一样使用单独的、未连接的节点吗?
我问这个是因为现在不需要关系,但我正试图在未来证明数据库(预期关系)以扩展数据的能力。如果有任何帮助,我正在 OrientDB/Neo4j 或 mySQL/postgreSQL 之间进行辩论。
一个例子:
假设我们有一个充满股票的数据库。任何人几乎可以在任何时间/天买卖股票(只要市场开放)。现在这个数据库可以是一个普通的关系数据库:Table 1: IDs | Products | Prices | Sizes | Dates
. 但也有可能被组织为关系数据库Node 1: Stock A | Node 2: Stock B
。
如果我只是使用数据库来存储股票信息,在我看来普通的数据库会更好。但这是真的吗?它会不会对我使用关系数据库产生负面影响/使用普通数据库会更好吗?在节点而不是行中组织我的数据是否有缺点?
一张图说明一切:
该数据库将主要用于买卖类似股票的产品,但它们也有其他信息,例如附加到它们的位置。我正在尝试预测功能的实现,例如推荐产品,甚至预测某人要购买的下一个产品。
来自数据库的大多数查询将针对每个产品。
从数据库中提取:每天 100 到 1000 次。
推送到数据库:每天 20.000。
一个额外的问题可能会揭示一个缺点:
从关系到图或从图到关系有多容易。有任何锁定危险吗?
感谢所有的帮助,到目前为止评论都很棒!电阻
根据查询性能和多语句表值函数等文章,SQL Server 假设多行表值函数返回一行。如果它实际上返回许多行,这会导致为调用语句选择一个糟糕的执行计划。
添加SCHEMABINDING
到函数是否会导致函数返回值集的基数估计更正确?
如果我们假设我们将一个UserId传递给这个函数并返回一个RecordId值的表,该表允许用户访问,并且一些用户只被允许查看一些记录,而一些用户被允许查看很多甚至所有记录,函数或调用语句(或包含它们的过程)是否会从使用中受益RECOMPILE
?SCHEMABINDING
函数中的使用会改变这个答案吗?
我意识到我可以通过实验来解决这个问题,但我希望有人已经找到了答案。指向有详细记录的地方的指针会有所帮助。
我使用的是 SQL Server 2008,有一个用于报告目的的表,其中包含 500,000 条记录,这些记录很容易达到数百万条。该表将采用全文索引来快速搜索少数列。
由于这是报告表而不是源事务表,因此有时会添加新记录,而有时由于源表中发生的更改而必须删除现有记录。
我的问题是关于构建(正在进行的)报告表并维护该表的全文索引的最佳方法。
添加全文索引后,我应该:
到目前为止,我在研究时已经看到了这些文章,但这种情况的最佳实践并不明显。
我需要编写一个存储过程来接收 4 个数字并将它们插入一个表中。这是我迄今为止开发的:
Declare
@1 Int = 10,
@2 Int = 20,
@3 Int = 30,
@4 Int = 40
Create table #Temp(Num int)
Declare @I char(1) = 1
While (@I <= 4)
Begin
Insert Into #Temp
Select @I
SET @I +=1
end
Select * from #Temp
Drop table #Temp
Run Code Online (Sandbox Code Playgroud)
我知道我可以直接和静态地将输入插入表中,但我只想知道有没有更好的方法来做到这一点?我想使用一个while
语句,但问题是 (I) 变量的数字被插入到表中!!我的意思是输出是 1,2,3,4; 我想要的是 10、20、30、40。
作为数据库点人员,我需要对表中任何位置的 SSN 号码进行加密。我们使用 PostgreSQL。我的应用程序同行要求我们使用 AES-256-GCM 加密算法。但是,我不太确定如何在 postgresql 中应用它。
经过谷歌搜索后,我可以使用这两种 AES 方法之一进行加密:
1.
UPDATE ssnTable
SET encrypted_ssn = encrypt(encrypted_ssn::bytea, 'mykey', 'aes')`
Run Code Online (Sandbox Code Playgroud)
2.
UPDATE ssnTable
SET encrypted_ssn = pgp_sym_encrypt(encrypted_ssn, 'mykey', 'compress-algo=1, cipher-algo=aes256')
Run Code Online (Sandbox Code Playgroud)
以上都没有专门使用“aes-256-gcm”算法,这正是我被要求使用的算法。关于如何在 PostgreSQL 的列上使用这个算法有什么想法吗?
我知道表格
Select * into new_table from old_table
Run Code Online (Sandbox Code Playgroud)
陈述。Bur 最近我在这里和这里找到了 2 个帖子,它们使用它
SELECT * FROM NhlPlayer
INSERT INTO PlayerBackups
Run Code Online (Sandbox Code Playgroud)
我在msdn 中什么也没找到,这是一些新语法还是只是一个错误?我猜后者是因为
INSERT INTO PlayerBackups
SELECT * FROM NhlPlayer
Run Code Online (Sandbox Code Playgroud)
会工作得很好。
我想知道在特定数据库中创建的对称密钥是否存储在主文件组中?
或者它们存储在用户无法与之交互的某些特殊文件组中?
例如,如果我对文件组(主要或次要)执行部分备份,我可以确定备份不包含对称密钥吗?
例如,在 SQL Server 10.50.6000.34 上执行的备份始终可以在 SQL Server10.50.4000.0
或10.50.2500.0
. 所有这些都表示 SQL Server 2008 R2 (10.50.xxxx.xx) 但不同的版本(服务包 2,3 等)。
从我所做的一些测试来看,似乎没有问题,但我想知道这是否总是可能的。
sql-server ×7
t-sql ×2
backup ×1
encryption ×1
filegroups ×1
functions ×1
graph ×1
mysql ×1
postgresql ×1
restore ×1
select ×1
sqlcmd ×1