使用 Visual Studio 数据库项目使用 PostDeployment 脚本插入图像
Insert Image with PostDeployment script with Visual Studio Database Project
我有一个 visual studio sql 服务器数据库项目和一个图像 table。我需要在 PostDeployment 脚本中插入默认图像,因为该图像将用于所有具有空图像的实体。如何将此图像存储在项目中,以及如何在脚本中访问它?
在数据库项目中插入此图像是一个好习惯吗?我有一个 WindowsService 项目和一个 ASP.NET MVC 项目 entity framework。我是否应该在其他 2 个项目中的每一个项目中将此图像插入某种初始验证?
有几种方法可以做到这一点。
给定一个 table
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。我认为将它保存在一个单独的脚本中并从主 post-deploy 脚本中使用 :r
引用它是个好主意(如果您已经知道这一点,我们深表歉意!)。还请记住,您不需要在二进制 "string".
周围加上引号
我有一个 visual studio sql 服务器数据库项目和一个图像 table。我需要在 PostDeployment 脚本中插入默认图像,因为该图像将用于所有具有空图像的实体。如何将此图像存储在项目中,以及如何在脚本中访问它?
在数据库项目中插入此图像是一个好习惯吗?我有一个 WindowsService 项目和一个 ASP.NET MVC 项目 entity framework。我是否应该在其他 2 个项目中的每一个项目中将此图像插入某种初始验证?
有几种方法可以做到这一点。
给定一个 table
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。我认为将它保存在一个单独的脚本中并从主 post-deploy 脚本中使用 :r
引用它是个好主意(如果您已经知道这一点,我们深表歉意!)。还请记住,您不需要在二进制 "string".