Why does it give error on bulk insert? - sql-server

In SQL Server Management Studio, I try to do a bulk insert from a file in the local machine. I get that error:
*Cannot bulk load because the file "F:\tick_bulk.txt" could not be opened. Operating system error code 3(failed to retrieve text for this error. Reason: 15105).*
The file is not opened anywhere..
Why does it give that error?

Your path is a local path, in your PC,
Must set path from the server!
to be sure that the path correct, login to the realy server (Server Contains SQL database) and try open the file from there.
NOTE: check also the file permisions.

Related

During Restore Database the operating system returned the error '5(access is denied.) why?

I got Database file with .bak format and I need to import it to my SQL Server. When Restore Database there is an error: the operating system returned the error '5(access is denied.). Here are photos:
Thank you all for the comments. I found the answer here:
SQL Server Restore Error - Access is Denied
Relocate all files to folder should be checked in the 'Files' section: just like in the post. And here is photo:
Also, in the 'Options' section I checked the 'Overwrite the existing database(WITH REPLACE)' and after that it worked.
Your error message references the ClassNorthwind2_data.mdf file. This is the actual database file and not a backup file.
There is not enough information in your question to identify where the failure has occurred - for example, what was the Device that you selected that is blacked out on your image? Is this to the dame file? If so then you cannot restore from a mdf file and you actually want to ATTACH instead.
If you selected a BAK file for the Device and the restore failed then do you already have a ClassNorthwind2 database on the instance? If so then you will need to go to the options tab and also select REPLACE so that it will try to overwrite the existing database.
To get a clear indication of what you selected you could click on the Script option instead of clicking the button to restore and extract the actual T-SQL command which will make it more obvious what is going wrong.

granted read access to file to everyone, yet SQL Server cannot bulk insert

Using Windows 10, SQL Server 2016.
My machine name is FR-PC4335.
Granted acces to file
\\FR-PC4335\Users\aubertl\Documents\csv\Exemple fichier cout de production.csv
to "everyone".
Logged on to the server using remote desktop and was able to access that UNC path using file explorer.
Yet, on a BULK INSERT attempt, SQL Server returns
Msg 4861 Level 16: access denied.
Do I need to give specific access to SQL Server, on top of everyone ?
Using Windows Authentication for the SQL Server connection.
BULK INSERT #temptable
FROM '\\FR-PC4335\Users\aubertl\Documents\csv\Exemple fichier cout de production.csv'
WITH
(firstrow=2,fieldterminator=',',rowterminator='\n');
Msg 4861, Level 16, State 1, Line 22
Bulk load impossible because file "\\FR-PC4335\Users\aubertl\Documents\csv\Exemple fichier cout de production.csv" cannot be opened. os error code 5(access denied.).
Looks like I have bulkadmin permission:
SELECT IS_SRVROLEMEMBER('bulkadmin') AS bulkadmin;
The BULK INSERT query runs successfully if launched directly on the server, but it fails if run from client SSMS. I wonder why.
Uploaded the file to the server. Ran:
BULK INSERT #temptable
--FROM '\\FR-COUVSQL200\csv\Exemple_fichier_cout_de_production.csv'
FROM 'C:\csv\Exemple_fichier_cout_de_production.csv'
WITH
(firstrow=2,fieldterminator=';',rowterminator='\n')
;
From my SSMS on the client. And it worked. The file had previously been uploaded to C:\csv on the server. Oddly, using UNC to the same path fails.
You give a path that is relative to your PC and for a specific user, but will not be suitable for a server for privacy reasons despites the file rights you give. You need to have a not only a shared folder, but a stict path which is not in the USER one. ....
Try to put your file into a direct folder on a real disk (C for instance).
If you are french you can also ask this questions in the developpez.com french forums in french....

SQL Server Restore Error: Directory lookup for the file "db.mdf" failed

When trying to restore a dbname.bak file (from a windows machine) for SQL Server on a linux machine using:
RESTORE DATABASE dbname
FROM DISK = '/path/to/dbname.bak'
I got the following error:
Error: Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL\DATA\dbname.mdf" failed with the operating system error 2(The system cannot find the file specified.).
SQLState: S0001
ErrorCode: 5133
and also another error for the dbname_log.ldf file.
Why is SQL Server trying to reference windows files on a linux machine, I hear you ask?
Explanation
MS SQL Server assumes by default that the file path(s) saved inside the dbname.bak is where the database should be restored to. If the file path(s) don't exist, you'll get an error like that.
Solution
Explicitly tell the DB to use a different file(s). But first you need to know how the file(s) is (are) referred to by executing the following T-SQL:
RESTORE FILELISTONLY FROM DISK = '/path/to/dbname.bak'
which might give you something like this:
Dbname_Empty
Dbname_Empty_log
which you can then use to execute the following T-SQL:
RESTORE DATABASE dbname
FROM DISK = '/path/to/dbname.bak'
WITH MOVE 'Dbname_Empty' TO '/var/opt/mssql/data/dbname.mdf',
MOVE 'Dbname_Empty_log' TO '/var/opt/mssql/data/dbname.ldf'
hopefully without getting any errors.

Bulk insert is not working in MS SQL Server

Bulk insert is not working when I try to read in the .CSV file data from the network path, it throws an error message saying
Cannot bulk load because the file couldn't be opened Operating system error code 5 (Access is denied)
If I try to bulk insert the same file data from the local drive of the server where SQL Server is running, it works fine without any issue. I checked the access rights with the network path, I do have full access. I need help to resolve this issue.
The data file name must specify a valid path from the server on which SQL Server is running.
If the data file is a remote file, specify the Universal Naming Convention (UNC) name.
A UNC name has the form :
\\Systemname\ShareName\Path\FileName.
For example,
\\SystemX\DiskZ\Sales\update.txt.
For more details: https://learn.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017

SQL Server Bulk Insert Http file

I am trying to bulk insert a csv file located on a remote web server but i am getting the following error.
Cannot bulk load because the file "http://34.34.32.34/test.csv" could
not be opened. Operating system error code 123(The filename, directory
name, or volume label syntax is incorrect.).
Is there anyway to accomplish this?
The documentation for BULK INSERT says nothing about SQL Server being able to connect to web servers.
http://msdn.microsoft.com/en-us/library/ms188365.aspx
' data_file ' Is the full path of the data file that contains data to
import into the specified table or view. BULK INSERT can import data
from a disk (including network, floppy disk, hard disk, and so on).
data_file must specify a valid path from the server on which SQL
Server is running. If data_file is a remote file, specify the
Universal Naming Convention (UNC) name. A UNC name has the form
\Systemname\ShareName\Path\FileName. For example,
\SystemX\DiskZ\Sales\update.txt.
If you must import a file from HTTP, consider writing a CLR stored procedure or using SSIS' external connectivity capabilities.
http://34.34.32.34/test.csv is, exactly as the error message says, an incorrect file name. Correct filenames look like c:\somefolder\test.csv. Something that starts with http: is an URL, not a file.
BULK INSERT does not support URLs as source. You should download the file first locally (using wget, curl or any other program that can download HTTP content), then bulk insert the downloaded file.

Resources