使用Visual Studio数据库项目将PostDeployment脚本插入图像

时间:2017-04-20 15:09:35

标签: sql-server sql-server-data-tools software-design database-project

我有一个visual studio sql server数据库项目和一个Images表。我需要在PostDeployment脚本中插入默认图像,因为此图像将用于所有具有空图像的实体。如何在项目中存储此图像,以及如何在脚本中访问它?

在数据库项目中插入此图像是一个好习惯吗?我有一个WindowsService项目,以及一个带有实体框架的ASP.NET MVC项目。我是否应该在其他两个项目的每个项目中以某种初始验证方式插入此图像?

1 个答案:

答案 0 :(得分:3)

有几种方法可以做到这一点。

给出一个表

create table testImage
(id int,
myImage varbinary( max));

您可以使用以下内容插入文件中的图像:

INSERT INTO testImage (id, myImage)
SELECT 1, bulkcolumn
FROM openrowset(BULK 'D:\x\dZLx1.png', single_blob) as myImage

这里有一些潜在的麻烦,您需要以某种方式跟踪项目中图像的路径,我认为有一些与安全相关的情况OPENROWSET无论如何都不起作用

在桌面上执行此操作可能更可靠,然后SELECT再次将值用于插入语句,例如

IF NOT EXISTS (SELECT * FROM testIMAGE where ID = 2)
BEGIN
INSERT INTO testImage VALUES
(2,0x89504E470D0A1A0.....)
END

(完整脚本:https://gist.github.com/gavincampbell/a25431dffd3555563a052c297a32415e

正如您将在尝试此操作时意识到的那样,生成的字符串将 long 。我认为将它保存在一个单独的脚本中并使用:r从主要的部署后脚本引用它是个好主意(如果您已经知道这一点,请道歉!)。还要记住,你不需要围绕二进制“字符串”的引号。