Comment insert des données binarys à partir d'un file local avec SQLCMD?

J'ai besoin d'insert des données binarys d'un file dans une colonne varbinary (max) dans SQL Server dans le cadre de mon script de deployment.

Le file est sur la machine locale, SQL Server est sur la télécommand.

Voici la définition du tableau de données

CREATE TABLE [dbo].[Config] ( [ID] INT IDENTITY (1, 1) NOT NULL, [Name] NVARCHAR (50) NOT NULL, [Cfg] VARBINARY(MAX) NOT NULL ); 

J'ai besoin de quelque chose comme ce pseudo-commandment

 INSERT INTO Config(ID, Name, Cfg) VALUES (0, 'Default', ????('Default.cfg')??? ) 

c'est-à-dire que datatables proviennent d'un file local.

Comment puis-je faire ceci?

Absolument, vous pouvez insert et mettre à jour datatables binarys dans un VARBINARY(MAX) avec sqlcmd en utilisant OPENROWSET() pointant vers le path du file. Notez que le path du file ne peut pas être concaténé dynamicment ou transmis en tant que paramètre, mais codé en dur tel quel.

T-SQL (save en tant que script .sql)

 USE mydatabase; GO INSERT INTO Config ([ID], [Name], [Cfg]) VALUES (0, 'Default', (SELECT * FROM OPENROWSET(BULK N'C:\Path\To\Default.cfg', SINGLE_BLOB) AS CFG_FILE)); UPDATE Config SET [Cfg] = (SELECT * FROM OPENROWSET(BULK N'C:\Path\To\Default.cfg', SINGLE_BLOB) AS CFG_FILE) WHERE ID = 0; GO 

sqlcmd (command line)

 sqlcmd -S myServer\instanceName -i C:\Path\To\myScript.sql 

Google 'SQL BULK INSERT' qui peut vous get au less une insertion à partir de files, bien qu'il soit destiné à plusieurs lignes.

Par tous les moyens, cela n'est pas possible avec SQLCMD seul.

Un outil de deployment plus puissant est nécessaire ici.