how to find what looks at a content Database in SharePoint 2010 - powershell

There is plenty of documentation out there for looking up what content DB a site collection uses in SharePoint. However, I'm looking for the reverse. I have a specific DB, and I need to know where (what URL's) it's content is referenced or displayed.
We have a DB that has been partially corrupted and in need of restoring. It appears the only clean backup we have of it is relatively old. However, at first glance the library we know to be using it is lightly used. There has been no new content added to it since our backup was taken.
I am looking for a way to confirm that restoring from this backup wont unknowingly overwrite some critical data somewhere else.

In doing more digging, I did find another SO post that was able to get me the information I needed.
How to see all site collections in a specific content DB
-ContentDatabase contentdbname | select url, #{label="Size";Expression={$_.usage.storage}}
In navigating to the returned URL, I found recently added data. So that now rules out the restore.

Related

How to upload files and attachments to the sobject record using REST API?

Salesforce has two different UIs and in accordance with it, it has the possibility to store attached files differently.
Two files were uploaded via the classic UI and they are marked as 'attachments'. Other files were uploaded through the new UI and they are marked as 'files'.
I want to upload all of these files using REST API. I cannot find the proper documentation. Can somebody help me with this?
That's not 100% true. In SF Classic UI you were able to upload Files too. It's "just" about knowing the right API name of the table and you'll find lots of examples online.
Attachment and Document objects have exactly same API names, you can view their definitions in SOAP API definition or in REST API explorer (there was something which you can still see in screenshot in here, seems to be down now, maybe they're moving it to another area in documentation...)
The Files (incl. "Chatter Files") are stored in ContentDocument and ContentVersion object. The name is unexpected because long time ago SF purchased another company's product and it was called "Salesforce Content". In beginning it was bit of mess, now it's better integrated into whole platform but still some things lurk like File folders can be called Libraries sometimes in documentation but actual API name is ContentWorkspace. The entity relationship diagram can help a bit: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_erd_content.htm
ContentDocument is a header to which many places in SF link (imagine file wasting space on disk only once but being cross-linked from multiple records). It can have at least 1 version and if you need to update the document - you'd upload new version but all links in org wouldn't change, they'd still link to header.
So, how to use it?
REST API guide: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_insert_update_blob.htm
or maybe Chatter API guide (you tagged it with chatter so chances are you already use it): https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_resources_files.htm
some of my answers here might help (shameless plug). They're about upload and reading data too and one is even about data loader... but you might experiment with exporting files first, get familiar with structure before you load?
https://stackoverflow.com/a/48668673/313628
https://stackoverflow.com/a/56268939/313628
https://stackoverflow.com/a/60284736/313628

how to edit or copy data loaded renames of my own published sheet/project in qliksense

This is the first time we decided to use QlikSense. So I am a newbie.
I have developed a sheet for a table report.
I loaded a lot of data and I made a lot of renames on the fields when they are loaded from the database to look pretier for searching in the Analytics tab.
In order to show my progress to my boss I had to publish my work. He wanted to use another type of user. So I published the App, but I lost the ability to edit anything especially the data loading. Unfortunately that means I have to restart my work.
Any suggestions on how to restore my progress?
(It sounds to be an off-topic question probably...because there is no code in here)

are there known issues with using "manage content and structure" to move sites within a site collection in SP 2010?

I would like to be able to use "manage content and structure" to move sub-sites within a site collection (SharePoint 2010). For example I have a site that is right under my top level site and I would like to move it to be the child site of one of its' current peers.
There is some concern from admins that this creates a mess in the content DB, therefore all moves should be done using powershell export/import.
Can anyone tell me, technically, what happens when we use the move command in "content and structure" within a site collection and if there are known issues with it?
Moving sub sites around within a site collection is no problem. They had the exact same command for moving sites in SharePoint 2007, and it worked.
When you click the button, what likely happens is there is a stored procedure that executes and moves all the data to the new location.
Databases are designed to handle the all these changes. You don't create more of a "mess" in the content database by moving a site around compared to the daily "mess" of adding new documents to document libraries all over the place. In fact doing a PowerShell export, delete old site, import process is probably more messy because the old site isn't 'deleted' it's moved to the "Recycle Bin". And some of the GUID's associated with the site will be changed on the import.
Basically my recommendation is use the Move command to move sites around as that's the easiest thing to do, and don't worry about the database, because it just works.

Editing Word Documents from Web Server

I have looked for a solution to this but all I have found are products that are close but not what I need.
We have a program that creates a word document on the fly based on data from our database, and stores it on our server, then the user can download this file to print,email,file away.
I need something that will allow the user to open the existing document from the server, edit it, and save it back to the server.
I need this to be able to work on all browser, so activex isn't a full solution.
This link is a proof of concept of using CKEditor to do what you describe.
The focus is on ensuring that the "long tail" of possible docx content is preserved across the editing process.
For example, take a look at the Microsoft demo docx, which they use to compare their web apps with Google Docs, at
google-documents-vs-word-web-app

sqlite DB to-do during iphone app update

I have some general questions about iphone app updates that involves sqlite db.
With the new update does the existing sqlite db get overwritten with a copy of the new one?
If the update doesn't involve any schema changes then the user should be able to reuse the existing database with their saved data, right? (if the existing database doesn't get overwritten from 1 above )
If there are some schema changes, what's the best way to transfer data from the old database into the new one? Can some one please give me guidelines and sample code?
Only files inside the app bundle are replaced. If the database file is in your app's Documents directory, it will not be replaced. (Note that if you change files inside your app bundle, the code signature will no longer be valid, and the app will not launch. So unless you are using a read-only database, it would have to be in the Documents directory.)
Yes.
What's best depends on the data. You're not going to find sample code for such a generic question. First, you need to detect that your app is running with an old DB version. Then you need to upgrade it.
To check versions:
You could use a different file name for the new schema. If Version2.db does not exist but Version1.db does, do an upgrade.
You could embed a schema version in your database. I have a table called metadata with a name and value column. I use that to store some general values, including a dataversion number. I check that number when I open the database, and if it is less than the current version, I do an upgrade.
Instead of creating a table, you could also use sqlite's built-in user_version pragma to check and store a version number.
You could check the table structure directly: look for the existence of a column or table.
To upgrade:
You could upgrade in place by using a series of SQL commands. You could even store a SQL file inside your app bundle as a resource and simply pass it along to sqlite3_exec to do all the work. (Do this inside a transaction, in case there is a problem!)
You could upgrade by copying data from one database file to a new one.
If your upgrade may run a long time (more than one second), you should display an upgrading screen, to explain to the user what is going on.
1) The database file isn't stored as part of the app bundle so no, it won't get automatically overwritten.
2) Yes - all their data will be saved. In fact, the database won't get touched at all by the update.
3) This is the tricky one - read this fantastically interesting document - especially the part on lightweight migration - if your schema changes are small and follow a certain set of rules, they will happen automatically and the user won't notice. however, if ther are major changes to the schema you will have to write your own migration code (that's in that links as well)
I've always managed to get away with running lightweight migrations myself - it's by far easier than doing it yourself.
What I do is that I create a working copy of the database in the Documents directory. The main copy comes with the bundle. When I update the app I then have the option to make a new copy over the working copy, or leave it.