"string or binary data would be truncated" when deleting row - sql

Im using Microsoft SQL Server Management Studio Express to connect to our SQL Server 2005 (think its 2005, its version 9.000 something something). I have a table with one column that saves a lot of text. I have set the column type to text. When i have a row with lots of text in this column i cannot delete it. I get the message "string or binary data would be truncated" when i try to delete it. If i try to edit the row i get the same message. What do i do?
Considerable : i fix it by drop table and create it again, but i wanna a Solution!

Though I'm late to the party, when I review the original poster's description of the problem, it sounds like they are trying to delete the row from within the table editor interface. I just encountered this same issue with a table containing a "text" column with long text, and it appears that the issue may in fact be tied to a limitation in the editor itself. From my own investigation, it appears that you will not be able to edit a row in which a text column exceeds 4000 characters. I tested with SSMS 2008 R2.
Hopefully this will help anyone else encountering this error.

I had same problem and solved ...
after selecting top 200 row of your table, click the "Show Criteria Pane"(left side of toolbar)
now uncheck your ntext column (the column holding a big text you was talking about)
now you can delete or update any row :)

Normally this kind of error happens when you're inserting a long value into the column that can't store it. Check whether you don't have any triggers or any related logic that could do that on your behalf when you're deleting the row (e.g. for logging purposes / audit trail)

I changed my data type to nvarchar(MAX) and was able to edit and delete as I saw fit.

I discovered there was a trigger that audited changes to the record (thanks Tomas Vana), but the target audit record had a limited varchar field for the action report (varchar(1000)). It was trying to audit the deletion of records that had varchar(max) fields...duh!
I changed the action report field in the log to varchar(max) and that fixed it...
bloody obvious really...:)

Related

Getting Error "The conversion of the varchar value '6160382514d97' overflowed an int column" in an SSIS Package

I have been searching for a solution to this and haven't had any luck.
I have an SSIS package which is loading data from one table and after some lookups, etc. writes it out to another table.
The above error is occurring during the first step of the Data Flow which is an OLEDB Source (SQL 2016 db).
The column in question is an nvarchar(250) and there is nothing that changes it to an int at any point.
I'm thinking that it must be some sort of implicit conversion, but why when it is nvarchar all the way through?
I'm pulling my hair out with this, does anyone have any ideas please?
Thanks for the responses.
The issue seems to have been a buffer size issue with with a lookup task.
When I checked the lookup table, it didn't have an appropriate index. I have added one and it seems to have solved the issue.
Sometimes SSIS keep the old metadata with the auto-convert.
I suggest that you delete your ole Db source component and rebuild a new with your select. Moreover you can go to advenced option (right click on the source component and in the last tab you can validate the datatype of your column and adapt to varchar if it is integer.

Fields added to SQL Backend lock the records in MS Access

We have a database that is using a SQL Server backend with a MS Access and Filemaker frontend. It has been working fine. I added two fields to one of the tables today, one datetime field and one bit field.
When the table was updated in Access they can no longer edit a field in the records. A Write Conflict error comes up
"The record has been changed by another user since you started editing it. If you save the record, you will overwrite the changes the other user made. Copy the changes to the clipboard will let you look at the values the other user entered and then paste you changes back in if you decide to make chages.
The save Record option is grayed out.
Any ideas what the problem could be?
Is the bit column nullable? MS Access can show those symptoms when dealing with a nullable bit column.

SQL error message when querying table containing one varbinary (blob) field

We are using Delphi XE3 together with a TSQLDataSet and a TClientDataset to read a table into memory from SQL server 2012.
The table contains various fields, one of them a blob "varbinary(max)" where we store the content from a text file.
My problem is that we get an error message saying "connection is busy with results for another command" when we do a open on the ClientDataset.
The commandtext is a simple "select * from tablename".
This happens only if there are more than one item in the table. It also happens only if there are data in the blob field (<> NULL).
Everything work fine if we add a second varbinary field to the table. The second field does not have to contain any data.
This is driving me crazy, please help.
EDIT: As a workaround we have simply added a "dummy" varbinary field to the table. Because of this strange behavior, we have come to the conclusion that this has to be a bug in the TClientDataset component. Tried to do the same in a older version of delphi (XE2 SP3) with the same result.

How to edit SQL records using Select statement

I got like 2000 rows of data, when I do select statement I can narrow my query but I cant change any value, as I have to change 50 columns, I dont want to use Update Command as then because values I have to update for each row is unique.
Anyone knows any easier way of selecting data using select command and then edit it.
EDIT
I just went to SQL Management studio, clicked on DB I am working on then find the table, I right clicked on it and then it says "Select top 1000 rows" so Now I can see the query and the data, I added "Where" into query and got what I wanted, but I cant modify the table rows below :S
*Edit 2 *
Or I can develop a Utility that will take Table Name , Column Name and its New value and simply updates it :)
You modify data using an UPDATE statement (with a WHERE clause) in a query window. While Management Studio has a feature called "Edit Top n Rows" that doesn't mean it's a good idea to use it - there are several behavioral bugs that are still unresolved even in the SQL Server 2012 version, and it can also place unnecessary and prohibitive locks on the underlying table.
I know it's not the answer you want to hear, but please become comfortable with proper DML commands. The documentation for UPDATE is found here:
http://msdn.microsoft.com/en-us/library/ms177523(v=sql.100).aspx
The long and short of it, IMHO: If you can identify the rows you want to update by using a SELECT with a WHERE clause, you can also write an UPDATE query using the same WHERE clause.
In SSMS - in the same place you saw "Select top 1000 rows", there should be another option "Open table" or "Edit top 200 Rows" (by default).
If you did that on a table, then pressed the following button:
You should then by able to paste in your select statement you've already written instead of what is there, press the execute button (Red exclamation mark button). The grid that appears is editable.
In general I'd be inclined to agree with #AaronBertrand though, it's better to learn the syntax to Update statements yourself.
If you have Microsoft Access, you can create a linked table to your sql server database and edit it by opening the table and modifying the relevant rows. You can create a query in Microsoft Access as well limiting the rows you want to return, and then you can inline edit the columns you'd like to change in the result set.
See for example here how to create a linked table to SQL Server.

MS Access error "ODBC--call failed. Invalid character value for cast specification (#0)"

Does anyone have an idea what this error means or how to solve it? I am using Access 2003 and SQL2005. It comes up when trying to add a record on a particular subform.
[Microsoft][SQL Native Client] Invalid character value for cast specification (#0)
This MS bug report describes the same message, but it is a bug in SQL Server 6.5 that has already been solved.
Solved: Apparently having no PK on the destination table was causing this, it didn't have anything to do with the subform or the query from Access. I wasn't even aware there were tables in this database without PK. Adding PK to the destination table solved it. The strange thing is the same query string that errored when executed via SQL native client, executed through SSMS with no errors. Hope this helps anyone else who has come across that strange message.
Hum, I would check the text box default on the access side. I would also bring up the linked table in design mode, and you want to check the data type that ms-access assumes here. For non supported data types ms-access will generally use a string, and sql server might be wanting something else.
So, check both the Primary key (PK) in main table, and then check the data type used (assumed) in the child table for the foreign key (FK) column. While we are at this, check your expressions used for the child/master link settings in the sub-form control (not the form, not the sub-form, but the sub-form control used in your form that links up these two tables).
Sub forms in access are sensitive if you don’t have a timestamp column in the sql server table. As mentioned check the PK and the FK data types and make sure they match up (just bring up the tables in design mode in ms-access -- you get an error message about the design mode being read only, but just continue on so you can check/view to ensure the data types match up).
So for the child table, you need a PK, a FK, and also a timestamp column (you don’t have to display the TS column in the sub-form, but you need it in the table).
Sub-forms in ms-access are sensitive and often fail if you don’t include a timestamp column in the sql table. (access uses these row version columns to determine if the data been changed).
Is one of your fields in the view calculated/built with the CAST function? In this case, you might not have the right to update/add a value for that field.
Can you execute your view in the MS SQL Studio interface and try to insert a record?
Another cause to this issue is that if you change a table name without alterting the view then the "Dependencies" of that view still remians with the table old name.
Let say I have a table 'A' and a view 'Av' which derives from 'A', and I created a new Table which will be named 'A' and I changed 'A's name to 'A_old' but I didn't executed an ALTER VIEW, so the dependencies of 'Av' still remain on 'A_old' but the view is derives from 'A' and it cuasing this Error in Access when trying to open the view as a linked table
I just spent a day battling this with an Access ADP project that was imported into a new Access 2016 ACCDB file. Initially I figured it was an issue with the application code, but I was getting this keying records directly into the table. Interestingly, the records always got written - it seemed to be the read-back that was triggering the error. Profiling the insert sql and running that from SQL Management Studio worked without any issues.
The table that was causing the problems had a GUID Primary Key. Switching that to an int column resolved the issue.
The SQL database was also littered with a few thousand extended properties which I removed before switching the PK. There was a strong suggestion from the web that these cause problems. The source of that process is documented here: Remove All SQL Extended Properties
I had this problem with Access 2016 trying to update an ODBC linked sQL Server database. Problem was a null value in field used to join the two tables. Eliminating the null value solved the problem
OK I just had this bad experience and it had nothing to do with PK or any of this stuff in my situation. The view that reported this problem in Access was created in SQL Server originally and used a CAST of DATETIME to plain old DATE to get rid of the unneeded time part. Up until today this view had caused 0 issues in Access, but started to generate heartburn just as described above.
So, I generated a Drop/Create script for the MSS view, ran it, relinked the views in Access, and the Access database was happy with the result. All my so-called tables in Access are basically views through links to MSS for reporting. I only have 1 table that actually does changes. Other than that, I do not edit through views in Access.
The message is of course useless as usual but this was my solution in my situation.
Based solely in the message you provided above, it appears that you are trying to set an invalid value to some field or parameter, etc... The message is telling you that it is trying to convert a value into an specific data type but the value is invalid for that data type... makes sense?
Please add more details so we can help you better.